INFO 0000644 0000041 0000041 00000113050 13571663573 011604 0 ustar www-data www-data package="WordPress"
version="5.2.4-0153"
maintainer="WordPress"
maintainer_url="http://tw.wordpress.org/"
distributor="Synology Inc."
distributor_url="http://www.synology.com/"
arch="noarch"
firmware="6.0-7300"
dsmuidir="ui"
dsmappname="SYNO.SDS.WordPress"
support_center="yes"
install_dep_packages="WebStation>=2.0.0-0065:MariaDB10:PHP7.2>=7.2.20-0004:Apache2.2>=2.2.31-0005"
instuninst_restart_services="nginx"
startstop_restart_services="nginx"
silent_upgrade="yes"
package_icon="iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAD2pJREFUeNrUXAlwFeUd/96RgxiOJARCEpIgkoNwiVdRMIDxpihY1B5YEaut4th2asdOPYrjtA52OmOl4EGRaSpD6gEqtnKIBAOoRAzkICTEHEIIPJJAyP2u/n/7dpNvN293v30kEP8zf0j2vex+/9/+7++wZa3MZxeZZhBfS3wF8QSZQZOJh8k/dxKXyz/XyHyM+Cvi4os5WOdFeEYC8SLim4lziGP5D1NjozvDHA5/uNMeeUX8COnaMVdrZI/Hl+X2em11zW1Xae7XTFxAvIN4M3Hj9xGgcOL7iB8knq9cHDcyyrtgSgqbmRLPUmKj2YS44YzTGp5sxFHKLzVN51l9cxs7WO9iW0vrR54817FIBn0N8S7iDcQwhZ6BFsQ2wCYGYZcTP02chAvTkuJ889IT7bdMTlYAuWACYNvLj7PPKht8h0802eXLJ4hfIv6nbKJDCiAH8SPEK4njh0eEeVfMneK4PXs8Gx0dOaj2e6ati/2v7Du2enep93y3G+NwET9P/AaxdygABIf7OpxvhNPhf3BWuu2h6zMZgaT7B8fPtrPyhhZ25FQLa2nvZnUtbayty93vexPJJ5FZsuRR0WSWow01kMBh6/dVsA37K/3dHq9NduaPEe+/VADBz7xI/JTdZvMvmpFme3Le1KAa0+XxssJjjfSm66X/IUwoFBsVIQF1e3YKy5k0jkWFO4Nq1CuflbDNxbV+n98PoF4mfiZU/xQqQCnEm4hn0YA9K++82jlRjkA8VZ4+x9YVHmG7KhtYR49nQE0r0ulguZlJ7OezMlj2uJh+n1e7WtnzHxd5DtafccpadD9x/cUAaDbxB3ihj904mf0qJ5s5bDbVF4qPN7E1e8okbbkYBK2C9l6TGq+67vX72dqCMhpLuZIe3EVcOJgALSQo8iPDnM5X77vBef3lY/up91+2fSM5zUtB0Kjf5U6XUgie9n17ij2Rv9fT5fZ4/IH040Ph6BM/b4nod5HTvB0TFWHPWzbfOSM5TvXhe9/UsMc3FbKyky3sUtG3Z86zdw9+y2Iui1SZ3fiYaDYvI9G+jVKDLrdXMbXigQRoIcBJGBHlz1+e60zjogl8y1Obv2Dr9lawHq+PXWry+PxsN/m80oZmlpOeyCiyStfjCLQ7slPs248c97V1u++SATpqdj+7wDNzYFaxl0X4/vXgPCfCrkKU0bKfrP9UStqGGhVUnWRL3twhZeBcJs8gA2SxBTLvnAsFCNHq/WHhzrD1S+eGJY+6rPeDisazbPEb26VINdQIQeOeKyewZ26b2e8zyABZIBNkk2UMqRZDnvMO5Tgxf7/3Blv6mJGqEPrwvwvYuc6eIQcOcqW1P57DpibF6n4HspBMjkfe3hNDudI7dGmOXp5kpEFIAq/9xexMGx+toLLL8naz5o5uNhRp1eIfGIKjEGSCbHIl8KJVE5tF/FuKVB6qqXovQmMe2bhHCudDka6bMIZpUw8jgmxIdCGrnN8JAQS3v8ZBtvXS3dc5+SQQ0Yp3ekONcjOTLfuqPy+81glZ6ddXZdlNfRCq8hmPzs5SJVx5X1b1y4zDHHbG+yYQ6qMDda5+Nx05LFz6Ll9yoCYzAjwzYZQqS8e9S040S7VdMEocEWW9ZiIZSVY7ZdszZNnXGgEERFZSvuN+dM5kVTm+9LpJEovQ1tJ69vv3v1AJ9umTC4IWl1YJUfPu17YF/UwPODMiWdn7xbXuxtYO+KI84jY9E1uBfs7jOdlh0I5QSVuY+ih5G6hi1eg+ZSebQ7onZIXMLNAOXqFXiyGs18VHR8btfHKBJYDW7ztKpnK+12SClRvQHpgY2G63kTamC3UYoY1FtaeZm7J0aA9SDD1NGTt8GNv56wX9imc9QqKrJL64f+4rW92utq4m+jVVCfu8zv+IOGHZ9ZnMqvbUNLVKtZjZm0eVD1Z+pyBgem800v5D9ZUInTrfyT472iAVrSL04eE6Mq+sXi0i2cNWbS9OkLHYqDWx5eTNfYump6kQFqFbs8ZbVmuUJyI+A8KKagTorzsPSdogQsXHz6gqAcgODGRnrfJBSLdzciYl+hFtFFq9u1RSaTOaNXEs4/9OhACOSA2HDiX6PaIEE9/wRaUF91ChirTAQM6JUniA7kQOcPf0NAcfgtHX2XyoRiifuDUr2bIWfXi4Vuh7aLFaodc/L5fMTfQl8S1gGQOHjEkvQDeTDXpnX5HQ+8WdFSekGwAkdObM6JbJ1s3sy5rTQoJgysiKmcG/QftFvgcZUfn3tksJA2DBAhOdEkBAK2fm+NHeSGdfIrm/urHXDxXVuoTSfKtmBuA/LjFvE6MAvTot3tK9txTXSvNnZuYI2lPZ0HsNGBAWPrkVIoUrZJCx16SNCecH/nl1oyVTwBvGPJhVEjHhUAIBZNj4VZXu56grlW4EZOWthLBQcqKpAAiLBti0xFhVO4NvZWw7IhZxrPoK5VkibVqAb8XMAuDX6o6bj16QtfZMn7Zx7VoJoKn4KW30cC4jbelnqyIRB9EmlJlUEQ2F+cKMrWbdB+vP6IT4Jk0W3iczN4UlAZSB2M+3Uqtd50ISAm9YNEnjaXADwSmh65Wnz6pas3I+lAGAJoyj4pRXX0wNhxpxFkxJtSwE+kv7q08J+KFky2YWrCUcTLN4mfEMYAJsAFD8iGHhdu2AQ40408fHSTXRYDhrmBmSUqvga0lJYXg63ap++TIm8fgnekSkGqBgCwkG28xQQ4mUCFajWbB7bi2tM+0SyJhES/9ERzgdIi0FqCtmMwYjmqFxJVIkW63NtLkZIlYwc9ZqlIyJBFC/bj7aERcScWBmvNMfyHICAvMZv0gtF0pA4IvVtrZuNXyRTodhf8bsAaGYmZXvW4lm2eNiNQAF96NamWVM2iSAWrt6VIYaHRk2ABFHXAg00ZTcQ8QPzU9PFO5Z8VNAKJv08iKtzG3dbp8CUHNrpxogsygkEnGQNIqaGW9eq7YXC5mZyPQOtIIHCBWBnvZrTfFsRzcwcQGgeldbl0q/zARDxBFZJSbaAkG1rnQENxVVD1ggQObNm46eeYFSY9RLZmRMagDQUTI3J58ETowfOSDNLhFfAfNSetO4J96wSCDAEjwjXyk1uaamqip3TBmJ+CpgAUyADQCSll9VnerLOLPGjjIdYLBcQktYQ2SmjbwQyhsWCQRmtRkCxZyJCaroJeqrOCxKAFAJfjrc0IfupLEjTXs76BGJ9KzNWiBK9MK9lAJSNBDw4AZLNXgZjMwL/Sb+RXJYlAMgeMXmr+tdbh597Xq/YKUHZgUuJJrx5gWtsRoIjMwsZ1KiKsE1WqajXewgYwGUigEQ4n1hUZ3LzmeTIk5QxFfg4XpmFsy8+EBgNtmItdh6tRnAU+jjkjphTQQGwIIFFnt6lWTiE8o/HPzc+7yMRFMzQ0vTyPH1VfgphlEO99FGLgwUYTmUaIYXwq8ZMPI/yKd4XwXTBhbARMmkJY0GWlsO1Xr5HEKkhSqiRcGiGQRQFkfoCSBybySNWjPjtQcvMFj7Rk8R3iuu8cpWtZkHCKqzo6Cqwca3WhdNnyAQzepNs1+0MPnle2bmZSUQYEpbW5vx/scs2i6flakqZIEBC2y1auQBAm3w+vx23vHCf5hlrLipyIJxrTYq5qXMt19IIOA1FNqkhH/8vVG+BmB5B40eNjBgge1VTAsQVOrEur1H3LxGYGG2WXvhg5JaS74C634U8zJzoCJmhlRBMbMb0/siG+ouoy7oEzlTVH2jt/ZVuGXN2RwMINjW3yjFDuPfGoQx80V7Kk+aLujEfZSQzoNllsDBgZvNegAQABMAK1koesH38NoDmSE7C2x+6QkGEAh7rFz/KChTadFvbppmmNaLRhyl5lIAN3OgVrQI+RafPcO89MaE9OC5O65Sac/aPWUAxSVjwPQAwlTjC42tHWFv7q1Qhc0/LbjacIBbimuEzAyapDhso+yWJ/TCzUoPaAQ/uwu/qKfVT992papjgfVNDec68IcvMG51WTCAQFijV0yI+vj1gwunpUqsRygTzBZ4IrQrdm/0hrWEJccwYzMz++PtM00jI4Dkl/hgzKsLSn1yRbE2WEexX/CA/4I3f/ajAx7+zUEtjVaFiZgCBgg69F2T8Poj0UCgjA0mj5mLYC+IX7QF2SQZA5HrCRZkC6deWw5p9ssH6lxOfpUEcg6sYtdrqImEZCvdAKuBgP+utkzBmF//6Y2qraLYSwYZEZyYzj4yo74ltjF+9WZhhR+ThgohPK9/YG7QKWY4XO2Url5+Y3UDjJ5WBKP/ltf3c8oAh3+xkOm1z4/APHBYwR/07mUEEF7X/T6/v+Xx/EIvXw1Dld9aOldqE4TirDG4ULYyiJgwOp28v8KLzFs2X1WbQRbIRLIhQ72fGexnNet8Q9olnT0e90N5u93qruMItvGhm/otJBdZCSIavbSEBepmaQG6AMrzMbb85bmqMUIGyAKZ6NfFsowsVIBAu7CNsbm92770rV0e3rHC3DY9nKuKbvATRhEHOYeoqYTi5xTwUbBCc7T72yADZJG3Zu4ye57oel/s8XyY3p5tybodbt7cEF4RGZAnKSvpjSIO9o9eyDYqIzPDfeEDseMHwYR3yBgzxg4ZIAsT3LdqZUE0CrjFLe3d3p/RW+AdN+jemZezT1bcIW1kgwbp+Riz2suMkLfoBQKYz5Zf3tqv/4SxYswYu2xWG0SfZ2VTLwh7PAvITO7Zcrh2mJ+i0VWp8cwuF7PQoPkZSRI3tXezBM3mEviGZz8qEl7HbFh7cT0fhbAvNZrTGkTLNRTKn/noAJ55jszqh3R5u5VnhbIho9AfWNe4H/vRl+cVeLXtCpQT2l3RevlJKCTSg8KYMDZ5z/x+GjOKrwKrz7KqQb3mzgK7YiJPnG2fnf91tf/0+U7blMRYwx098D9V5AvaQwQJQQHmg30eSVTPBZt+xowIZmef21rkJ39jl6vzB4ibQnnmQBxugt2JOMdH+HATRBNU8ocbmqS1SK72rn4LmBCaAcAYMlMAg1kWoynxoXi4iUoTWWAb0XPEsZf4eJxmuSpfzYbI8Tg8oU2IjSDYAyrNCE5PjvPPnZRoG4wDlnZXNfgPHW+ycX31l+V+zoDtG7UN0iFvyhFdOI0qh+sr4Yguh+aILiFAuCO6vGSifPcOjhenTn0vjugKRtAk7L/CWWbYRaOaxrx89PAOu83OIpz2KKUkQFLX7fF1+Pw+nMehnXVslitvZMHvssDRXINGtkt4TGAGCxwVmCT7sBnaHpzsQwDAMTkHu+jHBP5fgAEAxZ+tjWY4K8UAAAAASUVORK5CYII="
package_icon_120="iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAGKNJREFUeNrsXQl0VUWaLhJEURBFwhYIWySyBNmRfVPQgWHsBbGhYRxtdey2bTwzbdujQ7d2O/Zwpu1up8c+2gPN6EAj2i6MHFdiA5EliICRJRC2SIQQiEQ2DQbmfjdVj0q9qntvLTd5Af5z6uQlhLz7/q/qX77/r6rGPR57kZwnMsAbXbyRTb/meKMZ9+89vdGUvj7lja3cvx33RpE39nijmH7dcD4opXEDfW6AeLM3xnkjl36vI03phOBltOT3AHahN/K88Rb9/iLAMUhLb0zxxk0UiEyd/3xd26tIeqNGtX5WffYs2X7waJSJhPEN+n2pN1Z4411vLPVGxUWAzaUJXaV30a9NpMhffinJatmMdG/dgnTLaOG/xuhyTXOtN9tz5BgpqTjuj13llWTHoUr/dcXJr/hfw8SaTkcVXdXz6NeqiwBH96UAdRpdubWkRdMmpH9WKzKoU2sy+tp22kCqBH9H9rcA/IqdB8j6fYfIRyWHSeWpKn4CTqEDK/lFCnZK+e5GKRRkDfXGHLpaa0mb5k3Jt/p1IWNzMkmvdlfX60NuOfA5eb+olPxl4x5SduyU7Fewmh/3xpqLAJ8Lbh4Tg5zml15CJvTsQKb06eyt1oyU9CHr95WTpR/vJe9s3U+OfXVa/Gf46p/RrxckwIO98Vu6chMCX/r3Q3PILb06kssapzeICPDLr6vJm1s+Jf+zpsj33YJgJc/2RsGFAnBbb8z1xkz+h307XEO+P6oXGZHd1smbwHeerPq6JvT9/AQ5+mVyDJRxxWWk9ZVNySXpaf7EciH5xQfJMyu3kE37j4j/tMgb/+SNg+czwAiefo1YiU9hfjQ21w+YTOTw8S99v4iUZ8uBCv/r/qMnjAOtdi0u96Pw3Mxr/ElnGsQB6KfyPhZTsUoK8rzzDWCkF89TYiLhY+8f05tMH5ydlKOGmcM1u8rIG5/s830gAI41AffSsIGdM8i47pn+JEQUH1WQay8qKCa//+snoo8GcTKL5tUNHmCQEwthEdkPJvfOIg9N6EtaNbssMqhYEQAVX5nprWvBRIQLQeAHsC9v0jiylfmP9zZ7Adk+/sfl3phBSZMGCXA6TXvmsB90uOoK8sTfDY4cFcOPInCBYgByKgkCwEm5WeSOG3JIt4wrI0fdj7xeILqQx+mobkgAI1JazKc+N16X6YML0xwl1wSwb3xS0iCi6GFd25C7h/cgQ7q0Dv1dmGqA/N72UjGluj2OACwOgMHdvkNqKjp+hApzPGNQdqQZ/scPtvlmuCFKbmZL8ujN/f2vYbJwfTGZ+84mcrr6TMJgeWMCcVzQcA0waMY36Ar2TfJvpg4LZZ/go558e6OfS54PghjjwfF9/Ig8zFI9+NJq3mRjZk8mDunO9IyxU139LUTIbxPKHwPUP80aQzqHpBmg/H6wON//sOeLgOxYsmEX1g/pl9WKpCmyhNbNm5JbemWRgr2HSHlNNoD6NQoZ6+iKThmAv+2NVwgtqMMX/XHG6MCUAgHUD5d8QBZ5pqrqnJk6b+TrM2fJOg+4/F0HyUAvqLzaS7dkgkh8cm4nsrn0CCmtWclQ2newwL2xPRUAnuSNJfTBfIrxd1OHk8suUdOMC9buILM901RqSEg0JDl07BR5xbNSLZpeSnq3l/tmxCmTPLO+r+IYKS7/gmUgqEFv9MbO+gQYZvk1ZA345rb+XcmTtw4h6Wlyk4T89cevriXPewCfOXuWXCiC1YySY1HZUS9/bu8DmgSEp7OJPTuScm9CUHfFQF5jY65tAM6lPtfve/rG9Z3JL6YMUv7ygcqTZOaCPLKh5DC5UGX34WPk3W37ychsNSM2pnt78pln2baX+RQncspbvbEMxsDkPdMs8tw3CeWUUdZ7PADcwtIKMm3ee77fvdAFOpg+f7mvE5VAl3B1VFpQXRtVYUw6OtIpiZHJcr9fwSwrIsV1ew6R+/68KuWYqLoWFC1AcYLqxOsgmhO6BCmE9IlOhEyq8/G6jJeJif4FoaU+VF2QCqnYKRAW97+Yf0GDC0rzJxP7JShapEYyH5y08tLSyPjrMn3Gi7YJdaaLKy9OE43CwcPswZ++bbhfbVGt3B9c4OBilT47Y5TP4ulUzJhAt9Ax1/jwMOEqcq4Bhg9YSGeR7ydURXKYFZjl0+dhfqtl6v52kHW7EXTMxTfMPbaNA+BEyW9Kn04+HScTtJpe9Lk1xRUuULIS6Bo6p5JBsXAK8HRmGuB35/zNAGWe+8CSD8Re4gtS0H7kUqBzcPsc/3CXK4BBv8xl3/zblMHKCPBflhbIms4uOMEiQCuSa3+ObIWTuSTCDo8oAP+S/aHbB3bzm85l8sK6nX776EUhsbX5QvfAQLbwTAHu64178ALN5yiByWRX+Rd+S8pFqZF2La6I7W8DA2DBuc4RNkTHf7Ko+b7RvZT57vzV25MiavRbcQ+SkJ4c4c7aVpksKthJXt28N0Bxl/u+iPVyIUrnXcKByhPk8xNfJcUFIoOGFhux5xrUYebVzWpFryxfPf7lafKv/7c+crdmnP3crFkRz8OZ6mEmAE9hswP+BFtHVIIk3oUgHUBXh0qRP7mpb1J7LVpb60Iwse5ZtDLS71acjLfT89a+ncnC9TtZS+5QitVSXRP9GHvxw9G9jRJ1XcF78CtaFNeBi27gFFXiDjShJ2AiwyoqwJOo//VN1dic9nWiRMzIIBL+1c176g3gxR9Gb5Xa/OmR2HkAYMK5xb4Us8gm+sfsxb0jezp9MOzIQw8WfOVnX5wkZ85gI/bnfu68endZIPv17KptPgWKDwZ/Cb8JP8/8fdQ+66CVh/dn217wjPDr28qCJ54o6JwEh6wig3QF+pJ9NuTas19ezWO2LArAmA1+uyuqHigFuhTMbu6htAV7fiT7fvzn/O23h1k922+Wf+wX5l3IXzbudgYw+tbuHdkj6efje2T6GNEgcjTFblOYiU4wJN8b0cO57x3VvV0sUebKHQf4zdlGMim3k7Pn+XBveZQjIiJJScUx37rJfDEwkmGnArgJza38cNwVlyqmEOBpXQt8ntBMri2I0F1NPuxLwuYzVyzWs6u2Sv8NGHHdIdOJcNRFmiS4aslMnuzDwk/ZdmZM6Ol+4kCwGds2xxzarY2z50E9XLbyTABG+iizCMCIK0S0FIMtEeDEnl10H8gEZIStItHVEHXjlo4E5dBRBX3KLgUMX7WjBsMFa4ukP/9Wv65SDEWAE+ijaiHjUxEdYr8QNoPZPDRm3bju7WNaxfus/j+ey2WMgFU3f3WRtbmHgOuXxRk1JwxdmWSFRYCnMfvNLflaAh+H9AEdkggiUmmluDLTsCyuThk4l95tVR3YEknYdlnEGW9v2x+mzyYUyySAR4T5SF552KtrI/B1Opupo0ecx6VpVH3GCADo1++aF2PAhYdNYCFwHS0CDJvkH18EQl/WigPTwK9amAsbtgZm0PTYhjB5bZMd4wVluU7l4NpM06YTp7+uxSOozDS32e0mimkC4MHMbmOvq0zAIPF+F/74/aLPUtJMw4zZ9IMBXOTrruXf391kbJV4f7xql3x77chubfl4ajAPcMI898+SF6vX7k0O9225YUymOMw0ZrgtIzWxh/tUDovkI82dHQCUB7iG1JEvrOs71mrGGMEDnDirakBHeceGTGE4DMXmEBTUW+OLpu2CLZD5cTBu89bobRhEQCtaI1VuLWA3lAfY76JjB3vKTATeSDa7bDdtx0V6YELaUJcAN44qGihVnYh67+FkUgmFGRnZBOy4PvUBDGBEVL4zVB0mAgIhrpWClCQOM41Zb3vGRxxmGotCJ1dX1ZZVmQKHITBtAYBz2U9Uh37tOKSO/rDVcVfNnlYjAWEeBzftYvLFVRhZsTN6cLppv9xnb/1MXr4UMOwLgHPOLfHmShCDxDbYimOlQFDDteHN4yqMINWJetaXynqqVraAYTYA7hK2gsUoTpRlhSVW1GVcpIeLVRxHjABdRWkgAIiqOEKFiYBhlzTmf1U+GDMtLFJG0GBDXcJMT+zRIRaAMflsY4Q4CiPFh8PdWlCqB51LjjAWMcwCwAkbJDv2J2p1JhVXCnv+oCAxipmOI5XbGwHg97bvD02hRBEwzExjDBZmqWzfqthnHMQe2VCXOJknVc10HIxb2P4tgBdmxmWWFRhyFqclEPWpK1XDWtRcEqbcZusKzHQcHSQQW94cMUKUIxh1JCzIUlWNomDDYZkBgJsxU2Qy01yulLiiaVvePI7CSBjAaNqL8rlUz0ulGQBOZybaVsC12lCXOJdZdWKArdi21LpsyAvTN0xzFG4BLcchfzs9sYLTFGdbqWaJKvy3YY9gpl236TJwVbsi6ytGCJrIUWvtKivAYdkszbUyUzGgAVlh2/7r2kzzG93ERRKV34/CPQDg40HLXZeqQ1Hbph8YK83WnMY1aVxOvuxWct4ffEJUN6c6rYfD8jh+ozpouV96SXqdrmLX3LQL88zEZf1atZHuzS3RXZzKj3NYVidWsCqNMEkP4IdtqMvJvd0FNC7MM79iXJAeqrIsKmBR0qMwbDgs/RVcrkqaISYzFn8LEbWpXN/xGunmcRdmFWmfzeRzwbipLAoK+To1bFWgxpFT5QC4gi1rWR+TqT9MBTMtM8/gpm0mn4v69bCu8rbcZYV6naqyvdTAkMt8KgBwooNL1mnAHd2jzR7ZXH/jIqCRmWf4uPqefLJoHGY1b4ceGSOzcgKGpQA4UczdWVYpdeQmMzaoSTuqmQ6780B3koDfRScEGvhtqEsbxk1ob00IWnl0FgTMsyzIEjAsqQWwqjhuenRCfa4UKEA0z4yEseXNberXqlxadyPBtW3kx0gKGO4BwImzCbAPVTXrTAQ5nc2WDZuVAkZMZp5dTT7T+jVOfBcFPlP3KiFVHi1gWAyAN4WvYLNLmRGt2hTcsQJNzbRonvHZeAIGgZbN5DOJprHq4XpEQSFE12WoMBEw3ASAYbR9FFQEt82t2/b9WvorRWaeRfrPdvKZcNPYeSDLyU32ealSLQ5gfLhKxnVtYDmirJkLJto0XcKksbkTyWSlyMyzLAWx2UBnUr+WZQbIe7GBQHcCy/rngB3HZ/iYMoAT982rtlbc0Lm1sTJs/B0OOtM106IiYZpl7seWN9eJEcDpy04PgGXRJV5QVpWJgF2BFODVuw8q/qg5wCYfojZgHbVmd7J5Loll8unUr2HSZYUbHe45KFCTYJcvAuwzWmhQk4EBDtaU04XZ0DVDpitFZp6DatQ2vLlO/VoGCvJy3c1oeE8ZH47PwDUXVrBFywBGCJfHfIKM8IAPlkWAdRFs4WaXqGZaNM8gNmTdh64mX1TGTZb/ggjSnVzAQBbcATOOx15BMa21wz9xm4eqXdOmyoNUQKc7JPm9wxWpa55dmOko9WsVe2VinlUTSsAscas4DzDuma2q+cDy6BI3Xpvu1UGeZ8MeRYmmRfOM1RHlPdnZI3ExbrJ/5+5E0grUVBOdw6yKYpkEMN5tGXtzWbM46o8A2VRs0hLk4mGFD3F2w79FITNsefMwyyabnCY5OCaKzDwLx0ctY/GUCDDkhTCzdfvAbGNFgLoM8oc20bSpeXZhpoPq16ozT0zM88wh3aM8+wv8NyLACfRVzeJYSaYtMLp7Y5NdRCct86yzOd1m8gWZaVlwBUJC90xpnFsmuzpecH0JK6wCGPZ7EV4gIFIpyObKGJuVgpWg2gEpplKIjHW6I2xbflXBjyw9Mlm9dw/voeQYuOA1EUepAIYsYC9wF4MsjEfzmekqBqOkG1yIK1VmnkV2x8Tf25ppMVJGUASCw9b/YuXKDmcDNsBIhl0QwBtoHuXzyMu3lTpfxTbBlmyliOYZZstkq4oNby4z0zL2CpNb9zxN3FUhE2DDFYiAWUEUgCFPsRfPrNwi/QWsYtNGcJsN48K5jFLzjNqqac5ts4rF53BhnqFjlbUUsHlK9jsqgHGDRyELCFQbkX86sV+kq1JFQdUKLSrmiuwQaJ5NfJyLySfWr8UFgL+rk46hJQc6lgkw4QK1QiI5zj8IYMjP2IvfvV8o/dDo7b1zWI6RMl4vNF8pfF7pyjzzk0+3u0I2+WTsFfJynUj9n2+8Xto/DSyAiYBVtS7Ar1J/7JfUVIEBfLFJQ4DNEfxQHsstRbNo21Bna6bZ5JOldDqWBf6bu8YuKXLmypwbKFZEF2DIvWxm4MIKGZ0HE41LE3VNte0R/FCka/PMxIY3Z/VrmXmOmpeDMcQloDKRnFw7O+hvhaGC2fEcXoDyU91PiKAH5qRuA5oOSebZpDtCNflsePM7h12XxF7p5OUPTeirrJ4BA45+BWeRbwMw5FFCt7e8tGG3sn45c8i12nt7bY7gx6SCInlB47irC6lsJp/MtEZNDZFqqa4RhO6BAZvPmAthfy8KwBXMDMDM4FJEVeUFZkW3xdaGuhSLDy7Ms4vJJzYcRA38oDvVPZDQOe5n5oJdgFvqAmBmCvIYE/XEmx8pw/qnbxuu1aBnu2Gcj35dmGcbxkklUfJyxBPQnWrH4JNvb+QPP8tjrtMVwJAZzFTjClgVb4uw/k8zx0TuVXJxBD8EPtPV7SauJ1+YeQbb9YfvjFRegAld4/YzKuUUC+IaYCSHs9g3c5auV1ZE4B/nz4oOsu6uOhMlmogtb85MaxCpg+wD4MoqRYxogq5ZME4xOBgHwJC3vPEE8ysPLPlAecwS/Ml/f3d0pOZwzFCbI/hBHuCAzzjEdhUHBX4AF2ZZVpBgbgc65v7/rygGJC6AGWuSz8zr/YvzleBg09pz00eFnhJgewS/SfNadMtgN/lU1gnxCnSj4vPxntAt53fzCccuxgkwptPtLIKD/3zk9QKlgmF6np0xKtRc26wUl9GzbPKZUpf4v7Lj92HVEKeoVi50CZ1ysUkp1Xl1XQDM3vAWmov5s/znb3wYyO68dPdNgSmU6RH8Js1rumLKm8tuf4EOoAuVz4VAl1wQW0l1bUT72ZyTBbb7m4R2ECDKU6VPEDAzi+4cH2iSTBrfbO+MiCKmvLloWfDZoYOg5kHokIuYq6iOC02f3fYgNORjUxnIC9cXk4deWav0WfA7iBgfuaW/tP3W5EIrFxF4mJh0XaKhnp2hjc/988kD/c+uOvoIOoPuoEMO3KmE61evD4B990nzsipmru/786rAPuMZg7LJ4u/dmGSy4XPCTpfnBd0Mus1rpqI7+dh+LPjZ1/5xIrmtf9fAVAo648xyFdXpUtvndnWU4cvemEzomVsILP7hhb8GnlTLfNGD4/vUWs06wVacwZUoupMPF29g1SKYCjLJ0BF0xQVjx6nPfdnFc6dnjJ3qSgdgwZd741ZvXHHo2Cm/HDgwK0NJXaanNSIDslr5tVMES3uPHPNzWlX/ryhzvGDE9lp3HbnKywRk1+7KouCB3u8N7RJ82TRquncvXEl2nrNCsOk3k5AKUX2sYCZo+hpG6IkBmPHT5y/n/YpUMMP/a9oI8r93jPMnQxTqEs1xOiuqLkkPFBvCdmFAJ9AN9xlKqO4KXD5zWgx6AJpD2CxEgILIcPbLq0P3/6CnCVGmipOtL/OcQMABbw4dQBfQCcdQ5VOdFbt+5rSYdAFmYAyhtCYExYBvPvdOpP2wUTjsukiPXARbvOCzQwdCM8ETVFcH43jetBh1gemJZoEJ1Lf4K+C7C/LIw6+t07oqQKYomz1ONmJy1iX+Dz4zPjtnksupbh41YaiiSuM60An2qqL383lvjKvxZfv8AvgD43L9lElXcMQxNqJF3T1oI6zvC819JscJw9c+nVco1oOR284yZad0pFGPx16sywVwjzfmkpoLMX1BQQL9XKqLqaP4xQ2fHiY7y46Sbd7ATndT6wC2DbsEQSP27dDK/2p6VifSHvRPCYe8IFz+qTf+UFcKr2uAIZkU5On8D8FX/2hsrpKA1xUQIF+drvZBDxK0/CIPV928qis4YA09y5JgDF0xD9XFqq1vgJmg+egZQu+55Vf0HTfk+A18cdz8GYewLswFa4tkxzKhM/X7rtOfhgAwEyT2jxDumnkIasgAeUqfzpHIhfoQNOYhNwa4kp6rfBohv1Wfz5gKADPBleRzKOC1BH4RraRjczKtjlV0ISBY3i8q9Ss+igAPgD5OuLPHLgJcW2Cy7/LGNELvVeQFUSxW9JAubfyzH6OQIrbkxqpdBz3fWuavWAU1ioI0FDmPmuSUkVQEmAnykUneuIN+lTpkUJsAGcfrdsto4b/GUJ0EoBI02AFMjF3llf71r3gdcMUNclfs6FtAv1alohJTGWBeMijIMN+jvdE26n8EL6w60BwBkSZpAbZpBTXDyxiBk8rSmDQMKacrZQH9PpuCDeIkl34vX2YegBan3YIbLqTEBAibItLApDFpmALF/54O3ndn05ElpF8w7+I5CJtIbYoQvrOE/u3iVPOlpvL/AgwADrvhYV+nItAAAAAASUVORK5CYII="
package_icon_256="iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAOAJJREFUeNrsfQmYVcWZdtnsa0NDs9PsO80OAqIIbiiEuAT1x6CoiYz5zZjRCY8OzqgZjT46kpjfxHGJwTAa16COxB1tRTZpaGjZ933fxRYQ/M97+hy4dJ+qW1Wnzqk699b7PMfG7r637z33+7761vc7p9uDrxKLxKPQufKdq2PK/1d3rtyU7/no4lx1Kc9T5lzLK3xvrXMdcq7jzlWa8r09Kf9vkVBUtbcgMejuKTauZs7Vx/vaUuHfqOVc/St8r3+ax2xzrp3OVeJ9LfWu5fYjswbAQhxVnGuIp3iFnqL38b5vIlp6V0VDcdIzCiWeQSh2rrne9y2sAbDwkOcpPK5h3tfqGWLI+lcwDMc9IzDb+4prvxUBawCyDVD0Uc412jvdswUwbMO9ywc8hJnO9ZFzFVnRsAYgU095KPtY5xrp/b92tGtUz/26Yd8RnS/DD3GmeN7ALOd6x7neJ+WJRgtrABJ72kHpJ3pfI4nhm9arRRrXrUl6NG9IGtapQZrn1jmt3LWrVyU1q1YhHfLrSz33uj2HyXffnyTfHv/+tJHYcegoOXD0GFm24wDZ+813ZNeRMtWG8ifeddLzDKZ5X49bkVKPc2wZUDkQw09wrutUnvRdmzUgnZvkOlf5Vyg9vmcCVu486BqD1bsPOddB9yu+pxDwDCCo0728gYU1AEahwDvpofgdwz4ZFPzcdk2cUz3P/bcpii5jGGAMlu3YT+Zv2O3+WwE2eF4Brs1W9KwB0IVcz1WF0g+XfZIq55zjKnufVo2cqzHpV9DYdd0zEQglSrbuI4s273G/wiic/OGHME9Z5HkFb5DyZiULawAiBzrp7vIUv5bMEzTPrU2Gd2pOzu/Q3FX+TFV4HoMAI/DFuh2kaM0OsuPQt7JPVeYZgqnOtcqKqDUAUQClu1+T8ky+MApb5pGLu7Yil3VrRQry6tq7GYDN+78hH6zYSj5euZWUbpNuD0AF4XFS3mtgYQ1AaFzlXPc41yDRByJ2v6xbazK2Vxv31LfgB7yBd5ZucgzCFtmE4gLPELxh76Y1ADLASf8gEWzUQXb+qt5tyTV929uTXqFn8Obi9WTGko1utUEQaDS63/MMLKwBSAt06D1E0g/BnAXE9Nf260Au6NzcTexZqAcShp+v3kFeW7TOzRkIArMI95HyBiMLawAqAS7+70l5HZ8LebVrkOsHdCDj+ndwG3Is4gMakF4vXkdeWbiO7P/2mMhD0UfwKy9EsAbAGgC3hv+Ic43nfQC67G4a0sWN7dFpZ6EP6FREruDFuatEW5pfdq57SZb3EmSzAcCRjXLeFMJZzkON/tYhXcmILi2s5hmIT1dtJ3+eu5Is2ryX9yEoHz5KypOFZdYAZA/QwPOEd/qnBZp0/uWiXmRgm3yj3xRcYWTPceHfJ06eImt2nZ1BP/jdcbLtwNFArya1H6FJ/dpuQtNHg5rVScuGddyZA9Px1aY95HefLHWbjTgBL+BukoUVg2wzACCu+BPhrOWjdn/niEIytH1TY94AlLq85/4Q2bj3sOv24sLgTlxASRNXx8b1SYf8XPffrRrUMa5lec76XeTJT0tFegpQKfgFKWc5sgYgw3C7F+vnpvtFTM/dNbKXdlcfyo5TrPza65zmh8jWg0eNvsm+IehXkE8Gt21ihFFAaDB11lJeI3nIyw08bQ1AZgCtu88Qjn793FrV3RN/XP/2Wkp5h8qOu62xUHZf8ZOOejWqubkTGIT+rctnHXQAJcTXi9e7HgHuMwcwZzCJZHhrcaYbgNu9WJ+Z5KtWJYfcMLAjuX14D1dg4wTc949XbnPc1Z2u8mc6UDXxDcLIzi1i9xCOHDtBni5aRl76aq3rYaVBmZcbeNoagGQB2bq/kHIiDiYQ30+5vN9pdpy4YtOiNdtdxQ8xAJMRQLfkmJ4F5PIeBdLEJTJAd+Fv/lHsfhYcACHJzSQDGYoy0QCM8pS/WTp3/97L+rq1/DiApN3M0k2y7axZAR2zE+9+vZk8/N4inrAAyn8jybBOwkwyAKDgQpLvrnS/iBPnnlF93U6+KAFFR5PKu19vUs2Qk/FABcY3BqnlyCiAkumj7y92jQEHnvLCguPWAJgDnPavk/KRXSpwqjw4egAZ1rFZ5Kc9OtOg/CEJL7IeSMZe2r0VuWFgp8gTiLPX7iT3z1zIE5ahnfhqUr4IxRoAzRjmKT9TqyFE//mjgZEm+ZC1f2HOSje2t4gmRIAhGF1YEFkLNkKBe96azzNsBOUfRxLOO5B0A3Cncz1GGIs00N32H1f0jzTWRyLpmS+Wux1oFtEDodvPhnUj1/RtF5lBnzZvtdtNmKZSgDBgsnM9aQ1A/PE+avsT08WRT1wzxG1OiQIfLt9KnvtyhUuRbRE/oPzjB3UkEwd3cZO6UXh0d785lyckmEbKewaOWwMQwwHgXH8naRp7bhnaxe3fV93QgxMByaLnZ6/QvVDDIsXLu2VoV8cQdFbOr4i+AYQE6CZMgyIvL7DfGoDogOGdd0n50kyqMDx65bnk4q4tlf5hjJ2+uXiDq/iKl2FYKAwN7riwpxsaoLlLQ0iAjciXkwSNGCfJAICw423CSPahmeep64cpb+pBQuiRDxa7zSMWCTgl8uqSf724t/JDAENFCAnSzGMgOfhjkhDCkaQYgFGe209t6cWHjZNfpQsIhYfiS9BPWRgAlHvR7KXyQOAMCcq8cMD4pqEq+SPGmf4awcr7pnNRu0F+fl5X8psfDVTm9sHd/2PRMjJ5xnyyfq+N85MKGPDXF60n3534nvRu1UiJfNSoWoWM7llAjjsysmgLlXgEpYlrnWuZc620BkAeoOn6m3dDK7/4c84h/3Z5P3LbsG7K/iAGcm576XPy6ert5JRt4kk88BlCUf/x9WZ31ZqqFuMh7ZuSBrVrkDnrdhKKlKBRAcQzaxE9WAMgjttIeU9/oNmGq//UdcPImMICJX8MW2rQE/5bx+U//N0JqzkZBnymby/ZSE6cOkX6F+STKjnhq0O9WuY5VyPyyapttOQgZPdKLy9QbA0AP9Dg80faD9Eb/pcJFyprDUUDD079uVkwjpvNwEldvHkvmeUoLMaRG9UJP2OAhOMFHZu7RgCHCMUI/Mi5QO6wwBqA9LiVlNN2BQIu3F9vGqFkdBSx/tSPl5IHZhbbUz+LsO/oMfJWyUZSo1pVl+8xLHAgXdSlpWsEvjlGlaMrnGurcy22BoAd879Ac/thbaH8rRqG7+xDgujnzqlv+/azE9+f+oF86cTvCzbuJgPbNiH1a4brJEQn4qXdWpHP1mxnjRaPNi0nYJIBQLb/b17ypBJw4kP5m9YPv4ADJZxJL39Otmc5GYcFcWUA3kCrhnVJpya5oZ6rXs1qZFT31uTztTvIgeBlJX5OAAZgpTUAZ4A6P0p9gdl+UFFPu3EEyasTbn4fo7lTP1lKHn5/MTmeng7KIksAWfhwxVYnDDxOhnZoRnJCtI8jOY0y4bwNu8ieYOKXHO+wW+h5A1lvANDh9x6h1Pk7O1b5+QnDScOQ5B0g5/inv31B/vH1FivxFoFYum0/WbhpDxneuQWpVU2+oaxmtSrkYiccAL8A8g1Beudc1zjXR0QzBXmO5nuOXk309teixfzP/3R4aOYeEHRc/eyHIhtjLLIUqAiNe+6j0BOekFnILmNDdC1P9ltmqwHI9U7+wHU7WLb5ohPzh6WDghUe/8InlofPghsY/53wl1mu7IQBZBcyzFgcm+/pQG62GQCkXNHbXyh547gAAs7bHbefUp+1sKACJWLIDujDw4DjICv0dKG6jvepKwfwvJcIqRw/Va1C/jpxJGnfOFydH6Obj3+0hNhmXgtZQHa+WLuDlJ34ngxtL88jiRLheR2audUGlB8D0M65WpPyaddYUVXDfb2DUJh80NsPBp/OIcoxyPRPeXuBS8hpYSECyN2l3Vu7VSec2IjfVVGO4bkh2//82pc0oljoRAmJmV4s7nFgEHh+QnN3wN13/YAOoZT/3hnzeemdLSzcsh2YhMb2astK2CnDKwvXuQtJKEAH0UUkRqLROD0An7o7UPkx0htG+TGM8esZ81yePgsLHoAoFsQhUe8dSAVkfMeho+S5LwP7gKp7OtKXxEQ5HpcB8N9YYCCFLbzg77PKbxEHME/y+FWDtS0qhayv3XuYRiriH5QXkRhIRuOqAjxCKEs7wNYCJp8wyv+rN+ZY5bfgAuL7V2+9WJvy+4DMM5iKhnk6QzLBAKDN9y5a/PWHa8+TTrQg5gdHGwdjq4WFq/wv3HhhrC4/DZB5yD6Dwu4uT3cSbQD8Lb2B+O3YQaHGekHgYaf5LHjd/mduuCD29e8sQPahAwz8hVAa5ZJiAKhbepF5xbouWSCJgoyqhUU6gAsQp23Uy2BlAB2ALlDQjHWAmm4Abifl88+VgI09d1/SW/qJX1u03m30sbDgwaTzu7vuv6mALkAnKBjt6VKiDEBH53qCFvejIUJ2Yw/i/f+cWWyl2oLb9UeJ2WT4DXCMfMATnk4lxgDAbQls5J9yeT/pXX2Y6kPSz67ctuAFNgWp3hIUBaAT0A0KakUVCkRxZ+CuBJb8Lu/RmlzVu63Uk4Jm6Y5XZrtDGhYWPEC2f0zPgsS8XugGdISCYVGEAqoNAGabH6G5Ymj1lYFf7kuzksnCopJCJeH0TwV0hDEF+whRzB+g+u6AzTeX9sZkVzgj4Tdn/S4r0RZCuLxHQeJeM3TkgTEDqD8mDMZs3QYAW1DGBv0AbtjwTs2lnhQdfi/MWWWl2UIIKPl1bdYgka8dusIIXcZ6umaUAcAY1e9pFo2R3GBiw74j5N/eWWCl2UIYult9w+KeUX1ZHjN0rZZJBuAOWmyC7awyrj/ifmxhtWw+FjJQsThGtwcD3aEAunanKQYAL2ZK0A+Gtm/qjlzK4OmiZe4+dgsLGRTk1Uv8e4DuQIcomEIUJARVGIDHvBDgLCD7Kpv1L9m6jzzzxQorxRbSqFOtaka8D+gQpZJR19O9UAh7l1CbHB/0AxAfyDCswOWf/Pd5sTb7oAPLH82s+O+2jeu7PQglW/cqnTpEWfSybq1OP/+2A9+43z9y7IS7tqziv5PkeoPXsfK/c0mNalUcr26fex/3B2/OUQb8rczwZOqSa/u1p5GTQveeJiEYhMIagEALhJj/Fxf0kHpCTPfh8bx5g4Z1apAW9SvvfIfV7NS0wVn/n8o1iKkwUQNVtGaHm5dg7H7jAurT/z66/2nl4DWMSIr6OHD0GNl++MxqM9Ce7z5cedXZwe9gXPj6J2j98nCn69Y8M0XXpmHds/4f95W33g5h3n/RMdfIR1naPZFBm5/QzQiaO4rcPeRcF8o+dxhOwEuc60Oa2xKG3stk4PT6v6/KU7ahNPX6zy+RnoXIFKCj88r//iAyD+fhHw+S7jo1EWm4BC8l5VuGYs0BPEQT8HH922es4IK+LAx55C+H98x65Qfg/dwwsFNkz78jwxa/QqcYfQ0PyT6vrAFAM8KgbBXwMKOlA9rmE4vw9zEdVu8+mFH3CjoF3aJgEKE04UVlAB4M+iZmmnFCZjrCJCiT1ptu6n1Mh+XbD2Tc/YJuMXgDHozLAKANsU/QD+4cUZjxQovk0pIt+6Qfb3sbzgCLOKMCBseirjToAEPH+hCJFmEZAxBI8DmwTT6raSFj8ObiDWTXkTLpxz/zxXKr+aR8vHv6/NWR/o1MHCCDjkHXRHRTpQEY7lxDgn6AUkWmA7XYRz5YHFooH3h3YVbzGiDz/9Nps0KXU9Ph45WZSRXP0LUhno5yQ7QPgHr6M6xSorBy50E3Nt19uIzsOfqd6/KjeQWKq2rFODgNP1ix1R1Y6dE8zyWu8PsSKvYrJBXwknC/cP/A5FSu+EfIos173U7POPD56h2uoRXpt4gbCFNEyUp9faOEUNDRoigMQBdCIfmcOLhLYgQTseHzs8vbjNFYgwYbnERxk43gb6KngNVd6DfYtGxYhzSoWZ10b5HnNtKYArRrY81VarORb0BNAJQf4+Sy8yhx4L1lW9x+BQYfIKHpHMUAQEe7O9dy1QYAlqWSKUW75wWdmyfGAKAFF6dv1O6nCvgn57Id5Rnt2l9vdoXZlBPt2+MnXG/GZEybt8poAwADj3vIoAYPBHQOLeup3aEeIByYFJykMgeA2sOEoB9MOLdzour+eK0Xd21Jkgh4KyYtQsEq7SSEdAg7TAXov+CRio69Q45vGkL1vCd4OqvMAEwkAQQEiF1Mtq40XNatNUkq3lm60ZjXgkYeWYbnOPHnuSuNfW3QIeQBps9fI/xY6B4lf1DL01llBiCQjXT8oE5GJ1hoGNKhqTQ/oW7MXacuGakCDBZbY4A8i6leAIbZ/FAF058igO4xZm5uV2UARpKApQRwQUxKSIm6TxjFTSKQYMNkmDkGIBnEm//18RIjX5e/qxA5qZcXrBV+/PUDOtJC8I6e7oY2AIGuxEXdWhqxZTWT49ckhAEYUAkzHBUXUHo0cYV86lj1S1+tER5jhg5CF0V0V8QAoCAd2F54bT/xcV8/q20Czm3XJLFhABJbuExBUrypqbOWGscTgNPbD6MR2s1YIm7cGbr4E0Kh6ec1AFeRgOQfEj9QIFFMeXuBMcs9cOOTEL8mwQsYXZiMRDA6ENHKbRpSB8Rk2qOhi5RkbC2SZj4gnQG4LuibyD6Klv4wBIN69sxSc+LXJFcD0EBiSsMNGpZ8GjXT8dRnXxvNNL1uz2HhISnoIqMaN17WAKCOeIkqi4/4xrSTC7P5Ju6M5wFabedv2G3M68Ge+yQAJTfTEoIV+Qt9XVHkhWE2oKWMAYDrUKnGh6SPqLXHTfcTMOhcMmUkFpYzKYJrehiQpDVcrxevNyqHcuzE2YNhn6zYJlzqhU5SGIOqeKG8sAG4TtUH/c7STWdNv1nBVQMYVVPcWYQBSVnGgdDp/pkLjV0zj9clkwxkyPJ1ogYgn1DGCmUSZxUVHnVsU7KxmMhLajkTRhVzDebkVJLjTcELhSdgisJXxFslGyQMAFU3h3g6zW0Argpy/0FHJNr6idJfRXcLTQ+g2DYlDEjqbIBp3lTSeiue/LTUiK7KIC8OobLo2DR0k0IZBl0eK2IAAk//i7uKW/iZpZsCv//u15uMEYQxPdsk1gAs3LjHGAZchAFJ4jLAQfTYhyXGKX863WGBoaMjeQ0ArMWo4CcXPylpbasgazBlJLd360buVFYSAfcRJUHrBcgB8qlzToDFWyhT6mWEAaOCvPocSryQF2TdRbP/uLG008mk+DXpYcCMJeY0tyRxxgIdgjq9EJZxEC31IgygeGF5JIDOL8gABLL+DO8kTvrxwQr2ySST6IgKSa4GoHnEJw3RDVQCkkZphoNK5d5HVQYAkOE1ZOjqaGkD0K9AnPMvHXkFkhymLL9EGAC2oKTCllbDewE6yoLpkpAyyXKGrqY1AHATKhGPY1hBtPcf2X+e5JQpgpv0MAAt1qbUtZPYXAUv6q2S+GUxnY7g56LVAOgqhaejsGJ4X9EADKedjqLEH7yWy6TZ9iTPBiBeRGLVBCBXlERmY8wJxE3XDlLV9LokFp5AV9HfQosQhA1A/9aNhd8Y74tGCBAXTXR616lxosMAk0qrSZkQTAXmK+JuDuKZjpXZoNSnVSMpAzBMRfyPxIbI+iyTkoFJZQoCkMgSpZWy9/FsgJorzlCKxwBAl0RL5gydHUYzACiE9wmKjRnWJBA40UVuIsqBpmzKSTJTkM+DbwLAEsRYZ20sEHPH1VeBdnh/nwIL0CXRciB0ljKy34ekcHzkVPhBpUC/U9Nc4aUFc9bvFPYYTIlfceNsNUANklpafXHuqlj+DhKPvAdlyVaxZiXoLHQ3AFVSD/pUAzBIVfwv01n1dqlJgptcLwDxoimsS0m9j+ipiKOvQoQir3iLuE4xdHcIzQOohN6CBgC9zTKz1rPX7jSmNTjJ1YByL8CMZCC60rA7IIl4c/H6GAwAv55Ap0TDZIbuFgYZgMDF46LlHNH4PzUeMqUkiIkqGwaoQVJzKuiriDovJXJQQj+WbxfzSro1peZg+lc0AIgLulf8LZAVipI8hHGdTBLcMT2T2xqM0qoprEtJvY+opsArjTrUED1cRdC2cb2zCEdTAF2vnmoAsESg0jgclF+c/FO+pg+hDVh2aE+uBBtTeFKUGXXj8eHy6KoBMNKiIa9oIhC6SznATx/4OSz3n+FCROIBmCS4iF2TsPCCBpNYl5KaU/li3c7IegJkmt9kvDqGDp9lAAITgJ0EDQDcprDkFEhgmdLTnuSmIJNYl5JaDRBtaBPBV5vEGZ3RqSjqNXTiNAAdg36jY2Ox+H/NrvCbf2BATFnkmMR2VlPDANFmMlMg2ofPC1kZF92uxdDhjqkGIHDReMuGYvx/a/cezijBTdLCi2DhNYd1Kak5FZn6O88hJ5vrEjUADB3ukmoAAlO1ogSgGxUZALSzmtManNwwADkAU1iXkhpOofSmOiSdt1F+oYuojkGHKYn8At8AoNBfKU0LjjxKCSFyDwC5BF0MLZXj1+SWAwFTBq0QBjBGVI0FDiLVS0TmrpMvL246IEagAx2m0N5D53NzaKe/qPsP8Aw28MIUnrskLbwIgkmsS0mtBqBnXxXgTXwRwgBs3CseOjB0uSBHlfsPqOxBn7tulxGc7Ul2X32YklMB45JoX4kZBkDdWnuZ0d5UoBIgCoYuuwYgn+ayiQDKqrLubBLddfKbgsyYDYBMgV0qaRB1u1mYtXpbqMdDx0QPRoYu51MNQF5tsXVZMpYpKSdX0hZeBHlmMqwyUSCJORWVi1dUHGqir4ehy3QDkFurutAfOXD0mPIbj65ClfFXNnsBMltmbBig1gCgk0/Fc4ketgxddg1AXrDVqCH0R1gbTsLAlGRg0vMAprAuobqUtDBAVS+FDMe/itfDWH6bRzUADeuYYQBMobtO4sKLikJjCutS0nYxIu5WYTxV5bREcwAMD4BuAMRDgGgy9nB3RPnQbPwaDFNYl5IYBhw7Ec4AIJxVVSU7VHbMPAMQlQdgUvya5K5AAB5AlJ+TiEuatKYg1hZfHqhsyBJlfmaE83l+J2Al1KtRLVYLmYT4NakLL3wglEJIZb2peAHZVcl2JWqMGKS+dWEAlOzFjpKPHm/YFLrrpE8IipJKROlNJSkMEGXGruh5qRzKCuuNpMBt9q+u8s1GBVN6ApJeDRjWsbkRrwNu6YC2+Ym5bzWqVZF+rOpKlsxhS9Hp6jAAld6ZjGVWaJUCgURgFM1Gokjqwgv/cx3ZuYUxrycpswG4b6K7MX0gYx81tyDvewhALRiASrxXolOAfnxp41fTT/9mwsndaO9j60SEAaIl8VSg9KdaN06dEn8+igcTrOky7k6USUAfpiy/TCrFlWndjDBGomvndUBmMC5KmZXxtimHet0cVS8qDgJKzGWrns2WFYikLbwwzf031SgFQXZHBOr+ptCz05Cj6jSvW7NaLC/YlGRg0mYDTHP/z+QBzK8GyHoAUU2zyiTpaQc0DECZjtNc3qUyozU4aQsvTDVYMEpDOjQ1+t51aiqX9I2qgS0nR9xgUg71b2AAKhUoTaHlDgKyqiALMcEtTMrCC8R/Jrr/Z7wAs70pmeYvkHeKEnhGCYpOnww0ADJJhjh7B8yZEExGGDC0fVMj3X8fJs8GoPwnQwn33rLoKlaiXboMnS4LDAHielGyAGFo1H0HPEhKNcD0fAWME3IUZrr/uVLGKUo2qzBNSRVwHAYg0E8R7TaK0wCgt9oEuuskLLww3f033UjJfL7I/EdJxFqnmpi3zTgsD1ENgGjvctztw7YakBnuvw8YKZkGtKjRv7V4u3KU7r/vMYmAMQG6H3d8jwoDULdmvEK2cOMepVxt8nkAs2cDklKuhFDDWJkG0XkFJNui9k5za4l1JjJ02TUAgZ0Kohx/oHqKE7jRJrDdmrzwgtf9R7hnQuXHtBZrjH+LUuNh51/UBxOD4kudARAljhB9UZkUBphaDeB1/z9euc0I1qXhnZpLD91EAZk25ajdf0DUKDEoxNSFAKIvSgWwYBFUS7phahmL1/2H0JpgTE2bDRjeSSx5GtcuC4UewB6qAdj/rRjHX5P6tbR8SCYIrokLL3jdfwgHGqvgBZjAumQK4Qo8EVFjhPsYxzZm0dkEhi7TPQDROEZmmagKmMIabFr8yuv+++OqprAumRIGIK8j+jrimFZlLPukgqHLO6GxgUGLDINpmLFJWSBXYQLdtWlhgIj7b5I3hX4SE2YDzm0n9hrgPcWx0VpmMpGhy5upBkBm06/MRmEVMIHu2qSFF7zuPxiWkLX2YQrrkgneFDwREYD1J0peTB9gpBIFQ5c3+41AlZqBZJZ9omyiA6pJF2VhysILXvcfLn9q+GQK6xKMl84wAKes6ABQHNl/oE1DMQPAWCaKVsVDftBeaboGwiAaBnRuoocrD+4Xklg2DJB3/00KA9BVqnM2QPT0R/4kDvcf6JAvZpgQ/1NyZGvxH98ArFIRBugkyzRBcE1YeMHr/sO4l2zdV+n7GGE1gXVJZwejaPlv1urtsVVQRCcTGTMJq1INwNpAE7H3sPCL03UCYv21qtVLSY5fRbL/JhtTeFM6wgCZ8l+cm6tEDQBDh8/yAEqDfmPNroPCN69t43rahMaE1mDdCy94T06W0JrAugRZuqBz/DsMoPwihge5pznr4yGoQW5CtOGOocPLUw1ASdBvrNgl7gp2a5rdYYDOhRe87v+6PYeZbDWmsC7paLEWdf8x+BMXhZ5MiM34nJdXDAHKggRF9CTopNEAIN4JimuzQXDF3P/0GWsTjOmILvFWA+C5iSYA48r+Az2ai1HQQXcpBuBkRQNw+hupgGXbuPeI4IvUS5dtguDqWnjBn/1P36+Oqopu1iUoP4xAXEAfh0ijDTwljKXHBVFyEuguxTuBrh9PNQDUPIBoGAADoDMGhnDrZjXWMdTC6/4jw48hqnQwhXUpTm9K1P2PYusPyzsRJaFl6O5pXU9rAJZs2Sss/DIkiqqApEzRGv2twXGXsVS6/yZ5U0gExhUGmOz+Q6dEafdKt1HD4eIgA1Ac9JsyMfXANnq3vpoguHEvvOA1OCJ76k1gXYLyoyQYNdBiK9L9h/sSZ75Jpr8ktc27AhYEGYAFXi6gkssoGgv2K9BrAOAB6G4NjnPhBa/7L8pWYwrrUhzelCi1m4ghVePhiXVGQmcpDV0naR4AqgAlQUIgaungjurMAyAHEPcHpDN+jcL9PyPo+g0A2oKjJp0Vjf/jbP6BLol61dBZSn6ihKRU/CoO8M9WEQZAGHVPxsX5AdEQ12wAzwkpS1aJUrBu1iWEAVFSm4vKa7o+CtXAaxNlAmbo7Fk6XtEAFAW7juKljv6t9fbE4wZEyc3OK1hRD7Xwuv+I5xnccMbnVKJssT6/QzMhQx1n8k/GO0mjs0USBmCv8LCDzItWDRMEN+r4NUr3/4w3pb81GPmUqJbPiBqXuMNL0eoEdJWRAGQaADAElwY9oWjDA9yWuKnCKxsA/WFA1AsvonT/TwuFAaxLCANEFYH3eUWStQiH4vQsRasTaQ7sUlKBBTxIMmcGPfKrTWK00XCp4uziCgKmAzElqDsMiGrhBa/7D7aasFURE1iXoiAMFR3+idv9l1k8M38DdY6jkm5zGwCZ5hobBkQbv8bh/vuABxAH5VU6ZVW95kxERuOi/Q6rQwxd5TIAc0nAshBkPUWbQpAA072XzgS666iYbnncf1VsSXge3azBUYQBIs+3ZMu+WBujMFkqWk3D66NUKPZ7up3WAEBbPgp6BtE4EmGA7hXacH11x69RzAbwuv9476qGejLNm0JsLTL8E3dPhMxQGUNH3ycBjX607FSRKldybK+22oUmE+NXXvf/H8vVxawmsC6p3HYscvrD/Y/bA7qyTzvhxzB0NLDHh2YAZgRZC+w9F3WBMMKoY19AxVNQdNeh6WEAj/uPk1+196O7ssLr+aiOr0GZHqcMYapWdLQeugkdpXj1M0QMwE6aFyBTA71+QEetQmMC3bXKhRe8ShAFWaUJHZYqeitEu//ift8ypz9DN+d6Os1tAIA3VIUBV/Zpq33dUybFr7xucBRCCy4ByikTG1Qkl0W6/2BEYUzjAnRlTE9xWWHo5hu0H7AMwKuEMh0o2giBbCbIMnUCDRw8RBhRQtXCC54TMEqySt3GFIobdkR4RBf+x8e19NMH3puogYNOMqb/ZsgYAJj5j1QJwA0DO2k/gXULroqFF7zuP0p/UTEjwdXUzboUZtJSlGos7uz/NX3bq3T/EcpvljEAvhcQoEibhHvDQWekny9wk/ae9rDxK6/7H6XQmsC6hHyKbBgg0v0X19JPHyhNipaMIdNvlWyg/fhl1mPTGQC4DpXYglEKQlZUFOMH6fUCkCWNk8SR5t6FCQN4DEgcZJUmhAEybbKASPY/7kayW4Z2FX4MdJFSni1jxf88BuAQLX54bdE64ReKxgbRxQaZJrhhFl7wuv9oBona01ExX6DLmxKp/8fZ+4+mpNGF4sk/hi7OIAGLf0UMAPDnoG9+smKb8Hw5hF+3FwDl0N0aLBu/xtn7z+Ma62YNlpkNEOn+g4GDoYsLEwd3Ee78gw5CFymYlu7xPAYASYS1QXHHa4vWC7/JGwZ2jJzeiQU0x+jeJCy78ILnxEOYw5gFVwpG3BlbGCDaai5y+keZSK0IeMbX9BWv/UMHGdt/Z6kwADgunw36wSsL1wqfprDY1w/okPVhgGgZi9f9j3NazQTWJVFvSiT+j9P9h06IHozQPeggBc+SgDK+jAHwXYmyIPdDpjUUro5OLwB1XVl6LF3xq0nuv0nGFHsYefNKIt1/kA+ZRLcMoAsTzu0sce830eS4jMf9FzEASClPD/rB9PmrhV9447o1nTesLxcAl0k3a7Ao0y2PwUCjU9wEnrpnAxAG8DaZiXT/xZFI9THp/O5SJU2G7k33dFaZAQCeDPomGFJl6qTwAnRyBZgQBvAOtZjo/vtA+Un3QlbeFusLOpvn/oM2D3kxUUDnoHsiuhrWAGCh4DuB8cG8VcJvAMovU/NUBbRNUlonjRNcU91/H7qTgdiaA68yncHlTQDGmUi948KeUuEwQ+feIQGLflUYAGBq0DcxJy7DvTdxcGeX9FAXdC+94GW65TEUYIFhnAiRQndplWc2ACVDXlbhuMJDlCQxKCeKNPo2VeS5RA0ASoILgn7w1GdfC78RuLb3XtZXm+DoprvmOZVwj3hOLp1juiawLo3pySZcMTH7/y8X9ZJaHMPQtQWEMsavygAAj9Osksz0GYQ7CrpnHuw6UhZbppeGdExB/O7/Fq3vQzfrUjoael4ZQyI1jtAQYYuM3EPHGKf/46LPJ2MA0F4YuEr8yU9LpW4GvIAoufNZ0J0MTNfNxuP+Yz5fN1WX7tZgVhgg0v0XhycFWf/t2EFSj2XoWClhjP2qNAAI9u6nCaLMlBjyAMgH6AB43lSRZqoOA3jdf13Jv1SYsJCVZizFev+j96RQ9pPJfcHIMshY7iccjT8qDIDvBRTTLJRMXI2bomOTkAk97TTB5XH/dXDVm+pNIQwIOul543+4/lGTxnTIr09+fp549Quf89RZS2k/LpY5/cMYAOA+2k18vVh8RgClkAfGDNAiOLp57miKzuP+o1yFXIYJwOmkk3UpKAwQ6f6Lw5N6cPQAqXAXOsXITdwn+3rCGADwjM+leQEy8SBcNZmBiLBAIlCnEgU1+iTJ/TfJC6g4GyDS/Rd1CIN+fyT/RAFdYsT+cz1djN0AAJNpL/iFOSulnhAJwbhpxE1gDa7Y6ps09/+MAdDrTUHBUsMA3u4/eFJRbv1BeHvniEKpxz735QrWgTo5zOsKawCwbCCQcmjavNVSk2IIBR67erBUfTQMZizR281WkemWx/2Pm6ySB1Ai3QtZfaYgyBA8AN3uP17Ho1eeK9X6Dh2aPn8N7ccvE8rCj7gMgG+BKvnPyAo/9P4iqSfEMpFbhnaJVWjQRRf3IA0tfk2q+29KGOB7U7z04WHXp6fDz4Z1lV4NBx2icBJ8E/b0V2UAwK4ROHyAsoVsXIUeadG96JkSv/K4/3Fz1YsApVWdrcE4QBAG8Gb/kQOKajwcIQlkWQbQHQYj0VOe7mk3AMDDtBfz8HuLpNxUnIJPXDMk1oUiiKd1tgb7TLdJdf99YI14nEy6QQBTEG/9PypPCrMHj18lF87is4XuMA7dh1W8RlUGgOqOpHkjTKBmitgpLuAUgGLpDAOwEYZHcHUPMpmeUwHBBk/3H9zrqCjiUNYW2T4scHBO9nTOGAPgJyRmSrgyaeK5VrF2CeoWXLiLPO6/7hOWx0PRuZCVt6ksqhZmzPiL8hVyhs4zSRquf10GAJhEs0z3z1zouoYyuPuS3m5cHAegWLKvUwV4klZxc9XLwITSqi73Hwm/e0bJTblC9qArDE97ksrXqtoAbKOFAigPPfDuQmnXGKVBWXdKBFCsuPfAmyC0UcCEhazpPmvV7j96/P9w7XnSZWzoCKMfYTJRkPiL0gAAYCOdHSy4W6QbRUD8+MfrhsWSFDRZcOGu6sxTiABlVV0kJbzenkpPCkm/p//P+dzEI5XlbhOrsWs2obBzm2YAcEd/RgJ6A/zkhuzoatdmDchvxg6MvEkIjSxRdoWFAUp/prv/JuVUWFCZSIVM/m7cUNKuUT2px0MnGMnyMk+nTibBAACraKEAYpzJf58nXW5DlnzK5f1i8ALMzLInxf1P9fp0L2SNw5OCTMrmqXB/oBOM3NNkT6dIUgwAgEaFwCEFsMj+YVap9BNjqOIXF3TPujAgSe6/DxMWskbtSUEWwyy7gS4wmJXf93SJJM0AADcSCj/5c1+uDJWAQbksyg1DGGtlkC/Y0zThxlTVCDj2W8h2+gHQAegCBXs8HSJJNQDMNzDl7QWhkkRwu3iXQmSC4Jre/EODCQtZU4H+BBVckFf1bhuK1Bayf89b86UO0KQYAN+FeZKWD/jn176Urrsj8YJWS9lBi/QKtzm25ZA8rvSSLfsSaQBAuWZSaRWvJawnhYMHCWlZ+LLPoKN7koSY8zfJAPhJjNk0VxuegCwwM4DSCya/ooi541wPne4UTaL7b6I3FdaTgqzJ9viner8M9qTZRMGkn0kGAL2W45xrJy0O+t0nS6WfHL0B6BEQ3bjLA91012fi/80kyYhy4i5OTwqr3SFrYVisIeuM/NdOT1eOZ5IBSPvGkAh5ZeG6UJ4A6rAoE6oEFl7onrpDjdi0hKQoTFjIWm5I5ROpcPt//5OhoZQfMs5I+jEPyqQbgLSuDRohZGjFU3MCaBm+tl97ZS/YBNZg02i/khwGyHpSSPhhPD2M8kO200zGUkPlTDEAfnJjOu2UQEME9tyFAcYwVa4f1738UjdrsSroXsgKei0Z1iewUz3840GhYn7IdJoGuOlEYKtvkg0AgLbGWUE/QHZ00kufS/EJpgLlGVwq2obRpBH29cgCpaKwBtF6AeUQDUEgOyg1/+vFvUMbHsg0o9o1y9MJki0GALHO1YSyYgwU3TdP/yw0VTe8AFQIZNYvhxUedUK7iWQScB91VTNE3H/IDGQHc/1hwCHLyz1dOJ5NBgA45L3xwEYHZGtvevHT0JljlGxevfXi0GvIdZ1cmRL/+8DnqWMhq8j6dMjK32+7NHRpGe8VMswYLIPs/9jTBZJtBgBY61xjCGVyEK7Tz/6nKDSzDKjFYAQGtskP5cYx+rUjAeJVXaFHpoUBvHkUVQcGZBayy/j8yjzZX6vzs8gxQB7QBUQtD8JyI34KW4oD087zPx0ean4g7mRg0mv/NOhYyMoTwsHdh9svw99/lmvryCpklpG78ct9C3R/FjmGyAR4zm4glHlnnIQ/nTYrdDiAEs5/XNHfLefIkDbE3dOeae6/j7hLq/DcWPwOkAXIBBJ+YZPGkFHIKqPacNKT9ZkmfBY5BsnFG851M+2HiN/SxFPcAFnjm5MudfnjRS07GoPiQNSrqrIpDGB5UuDthyzIEnimws9bpck13OzJOrEGoDJQC6WSHqJ3GtZVllEoFdg/OP3mke4st4jVjysrn6nuvw9wBMSxkJW2PxGfOT77F28aoWQXJWQSsplmO/IkQumBsQbgDMB7djfLyo5/4RMltXEIAWa5X7jxQm7CUXRzRd0aHPWqKhMQF2swDE3F0BGfNRQfn72KPhHIImQyjcd2N4mA0y8TDQAwleUJ4APFDVc1qYfqwFv/dJnb7pkOGA+OuifAlMGZqBEHX2BFTwpt4visZdZ0BwEyCFlM83lN8mSaWAMg5gncSCiJQWSRb//bF6EGiFKBRBDaPf9n4ki3bKgzfs10999H1AtZYax9TwqfKT5btInLsvZWBGQPMsioaJz0ZPhZUz+DKvkjxpksI5gRRqfUlXitFX/4g+eSH//+JBmiaHEI3MNxzilRq3pVUrJlL/n+VOWutd1O7HpFzwLSsHaNSIT23/93ITmWIObfMKhZrQo5v2PzSJ579rqdbpjxyxGF5BHHuLdqWEfZc2Ok93ezSgmjpxFx4njYCZPvv+kGgHgGABtFrnGuQNO9yFHUVbsOuttgw0xrnb4pOeeQ/o6LiCWd6/ceJlsOVE461qtZjQxu1zQSoX1z8QaSLdjq3NubhnQhORFQvS/euo/cdVEvMrJLC/czVQH089/15tx0nxGym1fBWTT9/ifBAADolvrIuX7kXIEtWuv3HiEfOe7e0A7NlJ3MaAgZ26st6ZSf6xqYgynJv+0o+USws/BPRcsyavgnHcpOnCR9WzUO3XkXhG7NGoRu6kkFOBlunV5ElrK5GZCYGgXnNAn3PykGAACFyuvOdYVzBWZwoKBvLdlI2jeu716qgPjx+oEdSYvcOmS5E7MedWK+b5yTYFDbJqRlA3VuJRpk4P6bwkMYF74/dYpc1r210a9x2rzVZPKMeWcdAgEAd/9wz2sl1gCoB45GbEYd7FxtaTE06r7ICwxq10SZa4nn6d68oWsI8mrXJKXb97t/a2QXdTRks1ZuJ/9buolkGxAGjB/UidSIYe2brMv/0oI15BR7ihEn/qUkRjafbDQAfnwFI4Ajow/tl5AXmL9xt3tK16+pzg2smpNDerdqRK4b0IHsPFxGClvmKTMy/6/oa6N36UXnAfxA2uTVcw2sSUAL8S3TP+OhY5vmXNcRymZsk5GTUJmBH4aWyl8Rxhw12mmv/O8PIqnbo5Q0cXBnZXsKcdLE1WZsIkzbwQCXn6P1/KQngzcTTfP82WoAfDyZzu1CjRZUTHc7bpzs/oE4oHpTbdJgykJWdHmitv/YhyXpcjGQuYuIBhovawAqx14DnGsu65eQF4A3YArPf+XXt5lkO3QvZIVsXP3shzzEtHM9mStK+j3PyRDZQYXgQpJmiSJOmNte/tz1CMKSjKg+dUw1THHitUXrtFRAcP8hE5ANDi/kKU/WtmXCPc/JIPlBDPZLUs6ywtynhpzA2D+9bwRPPZD0rT+qcOrUD7GzBkMGRv/xPR5Z2OPJ1i+TGu8HoWoGyhGIFno4119JeUNGIOABwOoj+XTfqH6RNKJY9z89ejRvSIZ3ak5GdGnp/jsugKrrkQ8W8+6hwI6+yBd16sA53R58NZPl6w7nesy5arF+Ce3DoIO6fXgPZYMiIsCmmPkbdrmJsExvAkLVZEiHpm7bNla5Na1XK9a/j0Tw00XLyEtfreW51yg530sSnujLZgMAdHGu551rWLpfRNsoOOCv6dtOywtFGID59a827SbFW/a6/056aAB6bfRK9GqRR/q0akwGtM3XYmQB9O//18dLePkckOhDeW9VJitHNhiAVG/gEUKZJUhF12YNyJ0jCl3XVCdQFsQiyxW7DpI1zoUZgSjHZ1UAbdOgWoOyQ/E7N8nV/prg5j/5aSlvfuEb79R/KhuUIpsMAIC+3WecazTPL0OQYQjObdfEqDcBQYYxWL37oEtBtftwmUtJFdcSU4xMN65bk3Rr2oA0qV/+b8Tv7RrVU7KERRVArALFF6BzR/4I5B3bskUhss0A+LjOyw1wrRIGewxCA1ESUR1AKzE8B3gKx06cdP7/UCWvIqjduG7NaqRNw7Odo5bO//vTdPgZFD0dWYoJgMLD1UcnKCeg8KDsyjplyFYDACD7NMW57iJpkoQ+QB12y9Cu2kMDC7qr/8KclW4ylRNI8oGq61GSwD5+awDUoMDLDYwXiXMnDu5CxvZqo4SAxEIeyOSjg3DavFWig1Qve7F+VrdgWgNwBoOc6/fONYT3AXm1a5AJ53Z2qwZwjy3iA0g4kdWfPn+1aFcnsvsY4Flg76I1AEFA89BDztVf5EEjurQgP+nT3v1qER0wNPVGyXr3qyCKnes+Ut7UY2ENQFqA0+1B5yoUeRA8AVBPg0pMZ3dhJgFde+jYfG3Rehm6dKygv9+5Ztg7aQ2ADFAx+LWoRwCgn+Cybq3dXAHv4hGLcmAoB7H9Byu2yM4H4MSf6sX6FtYAhMZwzxCMlnkwmmJgDC7t3krJKqpMBHoZsDkYSs/BwkMDavmPkwwY1bUGwEx0d647nWsC4SwfVgQMAHIFQ9s3c5uMahrIhRcH0JOAZp0563e6MX2InY8+TRxO/OVWRK0BiAO5XngAQzBM9klQRoQRQOssGo3QdJSpBgEKj+YcNOqUbN3rKn/I4afZpHzZJrbt7rciaQ2ALmB6aKJnDEJPEqGtFoYARgG99EnovgsC6vJoWYayQ/EVzTFs8JR+mvdvC2sAjMsVjPe8AyWTMBihRUIRV+cmDVyj0LBODSMGbXxFR3ben09A0g6XwklG9DO/6rn5Nra3BiARQBP9WM8zQG9BJH49qgtoSILXAKPQPLc8wegP5iCckPUg/LkCEKv6e+93HDpKDhw95p7maMCJkMgTDKnveyc9VmwdtyJlDUBSke8ZA1QQRqryDMIg1TBAuRkbbuMETvpZpDyTD6XfY0XHGoBMxEjvgkHok+X3osRT+FneZWENQNZ5B0MqXNUz9L3CrUfmfm7KZU95jahqb4F27PHcXX+VdBXPCKDzsNDzEPpElUOIWNlLvAvtuMWewp+0H7k1ABbpT8nZFb5fmHI1874WeB6EbgO22VPynd5X/7KwBsBCEVhK1d8zBAUp/w/kkcp9CelmGoor/D9q7fsr/Gyzp/jF9mNJNv6/AAMAA8Ex710Xr5UAAAAASUVORK5CYII="
thirdparty="yes"
auto_upgrade_from="4.7.4-0136"
description_chs="WordPress 是开放原始码 (open source) 的博客发布平台,采用的技术为 PHP 及 MySQL。此套件可让您在 Synology NAS 上架设 WordPress 博客。"
description_cht="WordPress 是開放原始碼 (open source) 的部落格發佈平台,採用的技術為 PHP 及 MySQL。此套件可讓您在 Synology NAS 上架設 WordPress 部落格。"
description_csy="WordPress je open source nástroj pro blogování a vydavatelská platforma na bázi PHP a MySQL. Tento balíček vám umožňuje hostit blog WordPress na vaší stanici Synology NAS."
description_dan="WordPress er et Open Source-blogværktøjer og udgivelsesplatfor, der drives af PHP og MySQL. Pakken sætter dig i stand til at være vært for en WordPress-blog på din Synology NAS."
description_enu="WordPress is an open source blog tool and publishing platform powered by PHP and MySQL. The package enables you to host a WordPress blog on your Synology NAS."
description="WordPress is an open source blog tool and publishing platform powered by PHP and MySQL. The package enables you to host a WordPress blog on your Synology NAS."
description_fre="WordPress est un outil open source de blog et une plateforme de publication à base de PHP et MySQL. Le programme vous permet d'héberger un blog WordPress sur votre Synology NAS."
description_ger="WordPress ist ein Open-Source-Blog-Werkzeug und eine Veröffentlichungsplattform, welche mit PHP und MySQL betrieben wird. Mit dem Paket können Sie ein WordPress-Blog auf der Synology NAS hosten."
description_hun="A WordPress egy nyílt forrású blog eszköz és kiadói platform, melyet a PHP és a MySQL üzemeltet. A csomag lehetővé teszi, hogy gazdagépként tároljon egy WordPress blogot a Synology NAS-ön."
description_ita="WordPress è un blog open source e piattaforma di pubblicazione offerta da PHP e MySQL. Il pacchetto consente di pubblicare un blog WordPress sulla Synology NAS."
description_jpn="WordPress は、PHP および MySQLが提供するオープンソースのブログツールであり、発行プラットフォームです。このパッケージは Synology NAS 上でWordPress ブログをホストします。"
description_krn="WordPress는 오픈 소스 블로그 도구이자 PHP 및 MySQL을 활용한 게시 플랫폼입니다. 이 패키지를 사용하여 Synology NAS에 WordPress 블로그를 게시할 수 있습니다."
description_nld="WordPress is een open source blogtool en publicatieplatform dat is gebaseerd op PHP en MySQL. Met dit pakket kunt u een WordPress-blog op uw Synology NAS hosten."
description_nor="WordPress er et bloggverktøy (open source) og en publiseringsplattform basert på PHP og MySQL. Pakken gjør at du kan være vert for en WordPress-blogg på din Synology NAS."
description_plk="WordPress to narzędzie open source do tworzenia blogów oraz platforma publikacji oparta na PHP oraz MySQL. Pakiet umożliwia utworzenie hosta bloga WordPress na stacji Synology NAS."
description_ptb="O WordPress é uma ferramenta para blogs de fonte aberta e uma plataforma de publicação baseada em PHP e MySQL. O pacote permite que você hospede um blog WordPress em seu Synology NAS."
description_ptg="WordPress é uma ferramenta de blogues e plataforma de publicação em open source movida assente em PHP e MySQL. Permite-lhe acomodar um blogue WordPress na sua Synology NAS."
description_rus="WordPress - это созданный на основе открытого исходного кода инструмент блогов и платформа для публикаций, написанный на языке PHP и использующий базы данных MySQL. Этот пакет позволяет разместить блок WordPress на вашем устройстве Synology NAS."
description_spn="WordPress es una herramienta de blogs de código abierto y plataforma de publicación con la tecnología de PHP y MySQL. El paquete le permite alojar un blog de WordPress en su Synology NAS."
description_sve="WordPress är en öppen källösning för bloggverktyg och publiceringsplattform som drivs av PHP och MySQL. Med det här paketet kan din Synology NAS vara värd för en WordPress-blogg."
description_tha="WordPress is an open source blog tool and publishing platform powered by PHP and MySQL. The package enables you to host a WordPress blog on your Synology NAS."
description_trk="WordPress açık kaynak bir blog aracı ve yayın platformu olup PHP ve MySQL tarafından işletilmektedir. Paket, Synology NAS’ınızda bir WordPress blogu barındırmanıza olanak sağlar."
extractsize="52948"
toolkit_version="8723"
create_time="20191204-15:59:55"
WIZARD_UIFILES/ 0000755 0000041 0000041 00000000000 13571663560 013302 5 ustar www-data www-data WIZARD_UIFILES/uninstall_uifile.sh 0000755 0000041 0000041 00000027764 13571663560 017227 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Set up WordPress Database"
wizard_db_name_desc="Please enter the database name for WordPress."
wizard_db_name_label="Database name"
wizard_m10_desc="Please enter the administrator credentials of MariaDB 10 to proceed with WordPress database settings."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Please create a new exclusive database account for WordPress to use existing/new data."
wizard_set_data_title="Set up WordPress"
wizard_found_backup="Please select a method to import data."
wizard_decide_restore="WordPress database already exists.
Please select either of the following actions:"
wizard_restore="Use existing data"
wizard_create_new="Clean install (All existing data, including configuration files and the database, will be removed.)"
wizard_db_user_account_desc="Database user account"
wizard_db_user_password_desc="Database user password"
wizard_migrate_note="The latest version of WordPress only supports MariaDB 10.
The system has detected an existing MariaDB 5 database.
In the next step, your database will be migrated from MariaDB 5 to MariaDB 10.
Please enter the administrator credentials of MariaDB 5 to proceed with the installation."
wizard_migrate_title="Migrate WordPress Database"
wizard_remove_msql_title="Remove WordPress database"
wizard_remove_msql_desc="If the WordPress database is removed, all the data will be deleted."
wizard_msql_password_desc_remove="Please enter the credentials of the database administrator to remove the WordPress database."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_spn.sh 0000755 0000041 0000041 00000030314 13571663560 020070 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurar la base de datos de WordPress"
wizard_db_name_desc="Introduzca el nombre de la base de datos de WordPress."
wizard_db_name_label="Nombre de base de datos"
wizard_m10_desc="Introduzca las credenciales de administrador de MariaDB 10 para continuar con la configuración de la base de datos de WordPress."
wizard_admin_acc="Cuenta"
wizard_admin_pass="Contraseña"
wizard_set_db_desc="Cree una nueva cuenta de base de datos exclusiva para que WordPress use los datos nuevos/existentes."
wizard_set_data_title="Configurar WordPress"
wizard_found_backup="Seleccione un método para importar datos."
wizard_decide_restore="WordPress la base de datos ya existe.
Seleccione alguna de las siguientes acciones:"
wizard_restore="Utilizar los datos existentes"
wizard_create_new="Instalación limpia (se eliminarán todos los datos existentes, incluidos los archivos de configuración y la base de datos)."
wizard_db_user_account_desc="Cuenta de usuario de base de datos"
wizard_db_user_password_desc="Contraseña de usuario de base de datos"
wizard_migrate_note="La última versión de WordPress solo es compatible con MariaDB 10.
El sistema ha detectado una base de datos MariaDB 5 existente.
En el próximo paso, se migrará su base de datos de MariaDB 5 a MariaDB 10.
Introduzca las credenciales de administrador de MariaDB 5 para continuar con la instalación."
wizard_migrate_title="Migrar base de datos de WordPress"
wizard_remove_msql_title="Eliminar base de datos de WordPress"
wizard_remove_msql_desc="Si se elimina la base de datos de WordPress, se eliminarán todos los datos."
wizard_msql_password_desc_remove="Introduzca las credenciales de administrador de base de datos para eliminar la base de datos de WordPress"
wizard_admin_acc="Cuenta"
wizard_admin_pass="Contraseña"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_krn.sh 0000755 0000041 0000041 00000046150 13571663560 017505 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress 데이터베이스 설정"
wizard_db_name_desc="Please enter database name for WordPress."
wizard_db_name_label="데이터베이스 이름"
wizard_m10_desc="WordPress 데이터베이스 설정을 진행하려면 MariaDB 10의 관리자 자격 증명을 입력하십시오."
wizard_admin_acc="계정"
wizard_admin_pass="패스워드"
wizard_set_db_desc="기존/새 데이터를 사용하려면 WordPress에 대한 새 독점 데이터베이스 계정을 만드십시오."
wizard_set_data_title="설정 WordPress"
wizard_found_backup="데이터를 가져올 방법을 선택하십시오."
wizard_decide_restore="WordPress 데이터베이스가 이미 있습니다.
다음 작업 중 하나를 선택하십시오."
wizard_restore="기존 데이터 사용"
wizard_create_new="설치 정리(구성 파일 및 데이터베이스를 포함한 모든 기존 데이터가 제거됩니다.)"
wizard_db_user_account_desc="데이터베이스 사용자 계정"
wizard_db_user_password_desc="데이터베이스 사용자 패스워드"
wizard_migrate_note="WordPress의 최신 버전은 MariaDB 10만 지원합니다.
시스템에서 기존 MariaDB 5 데이터베이스를 감지했습니다.
다음 단계에서는 데이터베이스가 MariaDB 5에서 MariaDB 10으로 마이그레이션됩니다.
설치를 진행하려면 MariaDB 5의 관리자 자격 증명을 입력하십시오."
wizard_migrate_title="WordPress 데이터베이스 마이그레이션"
wizard_remove_msql_title="WordPress 데이터베이스 제거"
wizard_remove_msql_desc="WordPress 데이터베이스가 제거되면 모든 데이터가 삭제됩니다."
wizard_msql_password_desc_remove="WordPress 데이터베이스를 제거하려면 데이터베이스 관리자 자격 증명을 입력하십시오."
wizard_admin_acc="계정"
wizard_admin_pass="패스워드"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_default.sh 0000755 0000041 0000041 00000045543 13571663560 020344 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Set up WordPress Database"
wizard_db_name_desc="Please enter the database name for WordPress."
wizard_db_name_label="Database name"
wizard_m10_desc="Please enter the administrator credentials of MariaDB 10 to proceed with WordPress database settings."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Please create a new exclusive database account for WordPress to use existing/new data."
wizard_set_data_title="Set up WordPress"
wizard_found_backup="Please select a method to import data."
wizard_decide_restore="WordPress database already exists.
Please select either of the following actions:"
wizard_restore="Use existing data"
wizard_create_new="Clean install (All existing data, including configuration files and the database, will be removed.)"
wizard_db_user_account_desc="Database user account"
wizard_db_user_password_desc="Database user password"
wizard_migrate_note="The latest version of WordPress only supports MariaDB 10.
The system has detected an existing MariaDB 5 database.
In the next step, your database will be migrated from MariaDB 5 to MariaDB 10.
Please enter the administrator credentials of MariaDB 5 to proceed with the installation."
wizard_migrate_title="Migrate WordPress Database"
wizard_remove_msql_title="Remove WordPress database"
wizard_remove_msql_desc="If the WordPress database is removed, all the data will be deleted."
wizard_msql_password_desc_remove="Please enter the credentials of the database administrator to remove the WordPress database."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/wp-config-sample-0121.php 0000755 0000041 0000041 00000007465 13571662727 017567 0 ustar www-data www-data "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Sett opp WordPress-database"
wizard_db_name_desc="Du må skrive inn databasenavnet for WordPress-databasen. "
wizard_db_name_label="Databasenavn"
wizard_m10_desc="Angi administratorens brukerinformasjon for MariaDB 10 for å fortsette med WordPress-databaseinnstillingen."
wizard_admin_acc="Konto"
wizard_admin_pass="Passord"
wizard_set_db_desc="Opprett en ny eksklusiv databasekonto for WordPress for å bruke eksisterende/nye data."
wizard_set_data_title="Sett opp WordPress"
wizard_found_backup="Velg en metode for å importere data."
wizard_decide_restore="WordPress-databasen eksisterer allerede.
Velg en av følgende handlinger:"
wizard_restore="Bruk eksisterende data"
wizard_create_new="Ren installasjon (alle eksisterende data, inkludert konfigurasjonsfiler og databasen, blir fjernet.)"
wizard_db_user_account_desc="Brukerkonto for database"
wizard_db_user_password_desc="Passord for databasebruker"
wizard_migrate_note="Den nyeste versjonen av WordPress støtter kun MariaDB 10.
Systemet har oppdaget en eksisterende MariaDB 5-database.
I det neste trinnet blir databasen overført fra MariaDB 5 til MariaDB 10.
Angi administratorens brukerinformasjon for MariaDB 5 for å fortsette installasjonen."
wizard_migrate_title="Overfør WordPress-database"
wizard_remove_msql_title="Fjern WordPress-database"
wizard_remove_msql_desc="Hvis du fjerner WordPress-databasen, vil alle data bli slettet."
wizard_msql_password_desc_remove="Angi brukerinformasjonen til databaseadministratoren for å fjerne WordPress-databasen."
wizard_admin_acc="Konto"
wizard_admin_pass="Passord"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_ptg.sh 0000755 0000041 0000041 00000030260 13571663560 020062 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurar base de dados do WordPress"
wizard_db_name_desc="Introduza o nome da base de dados para WordPress."
wizard_db_name_label="Nome da base de dados"
wizard_m10_desc="Introduza as credenciais do administrador de MariaDB 10 para continuar as definições da base de dados do WordPress."
wizard_admin_acc="Conta"
wizard_admin_pass="Palavra-passe"
wizard_set_db_desc="Crie uma nova conta de base de dados exclusiva para o WordPress para utilizar os dados existentes/novos."
wizard_set_data_title="Configurar WordPress"
wizard_found_backup="Selecione um método para importar dados."
wizard_decide_restore="WordPress a base de dados já existe.
Selecione uma das seguintes ações:"
wizard_restore="Utilizar os dados existentes"
wizard_create_new="Limpar a instalação (todos os dados existentes, incluindo os ficheiros de configuração e a base de dados, serão removidos.)"
wizard_db_user_account_desc="Conta de utilizador de base de dados "
wizard_db_user_password_desc="Palavra-passe do utilizador de base de dados"
wizard_migrate_note="A versão mais recente do WordPress só suporta MariaDB 10.
O sistema detetou uma base de dados MariaDB 5 existente.
No passo seguinte, a sua base de dados será migrada de MariaDB 5 para MariaDB 10.
Introduza as credenciais do administrador de MariaDB 5 para continuar com a instalação."
wizard_migrate_title="Migrar a base de dados da WordPress"
wizard_remove_msql_title="Remover base de dados WordPress"
wizard_remove_msql_desc="Se a base de dados do WordPress for removida, todos os dados serão eliminados."
wizard_msql_password_desc_remove="Introduza as credenciais de administrador de base de dados de forma a remover a base de dados WordPress."
wizard_admin_acc="Conta"
wizard_admin_pass="Palavra-passe"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_hun.sh 0000755 0000041 0000041 00000030364 13571663560 020067 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress adatbázis telepítése"
wizard_db_name_desc="Kérjük, adja meg az adatbázis nevét a WordPress-adatbázishoz. "
wizard_db_name_label="Adatbázis neve"
wizard_m10_desc="Adja meg a MariaDB 10 rendszergazdai hitelesítő adatait a(z) WordPress adatbázis beállításának folytatásához."
wizard_admin_acc="Fiók"
wizard_admin_pass="Jelszó"
wizard_set_db_desc="Ha meglévő/új adatokat szeretne használni, hozzon létre egy új exkluzív adatbázisfiókot a következőhöz: WordPress."
wizard_set_data_title="Beállítás WordPress"
wizard_found_backup="Válasszon egy módszert az adatok importálásához."
wizard_decide_restore="WordPress adatbázis már létezik.
Válasszon az alábbi műveletek közül:"
wizard_restore="Meglévő adatok használata"
wizard_create_new="Tiszta telepítés (A rendszer minden meglévő adatot, ideértve a konfigurációs fájlokat és az adatbázist eltávolít.)"
wizard_db_user_account_desc="Adatbázis-felhasználói fiók"
wizard_db_user_password_desc="Adatbázis-felhasználói jelszó"
wizard_migrate_note="A(z) WordPress legújabb verziója csak a MariaDB 10 programot támogatja.
A rendszer észlelt egy meglévő MariaDB 5 adatbázist.
A következő lépésben az adatbázist a MariaDB 5 alól áttelepítjük a MariaDB 10 alá.
A telepítés folytatásához adja meg a MariaDB 5 rendszergazdai hitelesítő adatait."
wizard_migrate_title="WordPress adatbázis áttelepítése"
wizard_remove_msql_title="WordPress–adatbázis eltávolítása"
wizard_remove_msql_desc="A(z) WordPress adatbázis eltávolításával az összes adatot is törli a rendszer."
wizard_msql_password_desc_remove="A WordPress-adatbázis eltávolításához adja meg az adatbázis-rendszergazdához tartozó bejelentkezési adatokat."
wizard_admin_acc="Fiók"
wizard_admin_pass="Jelszó"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_ptb.sh 0000755 0000041 0000041 00000047541 13571663560 017524 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurar banco de dados do WordPress"
wizard_db_name_desc="Digite o nome do banco de dados do WordPress."
wizard_db_name_label="Nome do banco de dados"
wizard_m10_desc="Insira as credenciais de administrador do MariaDB 10 para prosseguir com as configurações do banco de dados do WordPress."
wizard_admin_acc="Conta"
wizard_admin_pass="Senha"
wizard_set_db_desc="Crie uma conta nova e exclusiva de banco de dados para o WordPress usar dados existentes/novos."
wizard_set_data_title="Configurar WordPress"
wizard_found_backup="Selecione um método parar importar os dados."
wizard_decide_restore="WordPress o bando de dados já existe.
Selecione uma das seguintes ações:"
wizard_restore="Usar dados existentes"
wizard_create_new="Limpar instalação (todos os dados existentes, incluindo arquivos de configuração e o banco de dados, serão removidos.)"
wizard_db_user_account_desc="Conta de usuário de banco de dados"
wizard_db_user_password_desc="Senha do usuário de banco de dados"
wizard_migrate_note="A versão mais recente do WordPress só oferece suporte ao MariaDB 10.
O sistema detectou um banco de dados já existente do MariaDB 5.
Na próxima etapa, o banco de dados será migrado do MariaDB 5 para o MariaDB 10.
Insira as credenciais de administrador do MariaDB 5 para prosseguir com a instalação."
wizard_migrate_title="Migrar banco de dados do WordPress"
wizard_remove_msql_title="Remover banco de dados do WordPress"
wizard_remove_msql_desc="Se o banco de dados do WordPress for removido, todos os dados serão excluídos."
wizard_msql_password_desc_remove="Digite as credenciais do administrador de banco de dados para remover o banco de dados do WordPress."
wizard_admin_acc="Conta"
wizard_admin_pass="Senha"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_ptg.sh 0000755 0000041 0000041 00000047570 13571663560 017533 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurar base de dados do WordPress"
wizard_db_name_desc="Introduza o nome da base de dados para WordPress."
wizard_db_name_label="Nome da base de dados"
wizard_m10_desc="Introduza as credenciais do administrador de MariaDB 10 para continuar as definições da base de dados do WordPress."
wizard_admin_acc="Conta"
wizard_admin_pass="Palavra-passe"
wizard_set_db_desc="Crie uma nova conta de base de dados exclusiva para o WordPress para utilizar os dados existentes/novos."
wizard_set_data_title="Configurar WordPress"
wizard_found_backup="Selecione um método para importar dados."
wizard_decide_restore="WordPress a base de dados já existe.
Selecione uma das seguintes ações:"
wizard_restore="Utilizar os dados existentes"
wizard_create_new="Limpar a instalação (todos os dados existentes, incluindo os ficheiros de configuração e a base de dados, serão removidos.)"
wizard_db_user_account_desc="Conta de utilizador de base de dados "
wizard_db_user_password_desc="Palavra-passe do utilizador de base de dados"
wizard_migrate_note="A versão mais recente do WordPress só suporta MariaDB 10.
O sistema detetou uma base de dados MariaDB 5 existente.
No passo seguinte, a sua base de dados será migrada de MariaDB 5 para MariaDB 10.
Introduza as credenciais do administrador de MariaDB 5 para continuar com a instalação."
wizard_migrate_title="Migrar a base de dados da WordPress"
wizard_remove_msql_title="Remover base de dados WordPress"
wizard_remove_msql_desc="Se a base de dados do WordPress for removida, todos os dados serão eliminados."
wizard_msql_password_desc_remove="Introduza as credenciais de administrador de base de dados de forma a remover a base de dados WordPress."
wizard_admin_acc="Conta"
wizard_admin_pass="Palavra-passe"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_plk.sh 0000755 0000041 0000041 00000045625 13571663560 017507 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Skonfiguruj bazę danych WordPress"
wizard_db_name_desc="Wprowadź nazwę bazy danych WordPress."
wizard_db_name_label="Nazwa bazy danych"
wizard_m10_desc="Wprowadź poświadczenia administratora MariaDB 10, aby kontynuować konfigurację bazy danych WordPress."
wizard_admin_acc="Konto"
wizard_admin_pass="Hasło"
wizard_set_db_desc="Utwórz nowe odrębne konto bazy danych dla WordPress, aby użyć istniejących/nowych danych."
wizard_set_data_title="Konfiguruj WordPress"
wizard_found_backup="Wybierz metodę importu danych."
wizard_decide_restore="WordPress — baza danych już istnieje.
Wybierz dowolną z następujących akcji:"
wizard_restore="Użyj istniejących danych"
wizard_create_new="Czysta instalacja (wszystkie istniejące dane, w tym pliki konfiguracyjne i baza danych, zostaną usunięte)."
wizard_db_user_account_desc="Konto użytkownika bazy danych"
wizard_db_user_password_desc="Hasło użytkownika bazy danych"
wizard_migrate_note="Najnowsza wersja WordPress obsługuje tylko aplikację MariaDB 10.
System wykrył jedynie istniejąca bazę danych MariaDB 5.
W kolejnym kroku nastąpi migracja bazy danych z MariaDB 5 do MariaDB 10.
Wprowadź poświadczenia administratora MariaDB 5, aby kontynuować instalację."
wizard_migrate_title="Migruj bazę danych WordPress"
wizard_remove_msql_title="Usuń bazę danych WordPress"
wizard_remove_msql_desc="Po usunięciu bazy danych WordPress wszystkie dane zostaną usunięte."
wizard_msql_password_desc_remove="Wprowadź poświadczenia administratora bazy danych, aby usunąć bazę danych WordPress."
wizard_admin_acc="Konto"
wizard_admin_pass="Hasło"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_nld.sh 0000755 0000041 0000041 00000045741 13571663560 017475 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress-database instellen"
wizard_db_name_desc="Voer de databasenaam voor de WordPress-database in. "
wizard_db_name_label="Databasenaam"
wizard_m10_desc="Voer de gebruikersgegevens van de administrator van MariaDB 10 in om door te gaan met de WordPress-database-instellingen."
wizard_admin_acc="Account"
wizard_admin_pass="Wachtwoord"
wizard_set_db_desc="Gebruik bestaande/nieuwe gegevens om een nieuwe exclusieve database-account voor WordPress te maken."
wizard_set_data_title="WordPress instellen"
wizard_found_backup="Selecteer een methode om gegevens te importeren."
wizard_decide_restore="De WordPress-database bestaat al.
Selecteer een van de volgende handelingen:"
wizard_restore="Bestaande gegevens gebruiken"
wizard_create_new="Installatie verwijderen (alle bestaande gegevens, inclusief configuratiebestanden en database, worden verwijderd.)"
wizard_db_user_account_desc="Databasegebruikersaccount"
wizard_db_user_password_desc="Databasegebruikerwachtwoord"
wizard_migrate_note="Alleen de laatste versie van WordPress ondersteunt MariaDB 10.
Het systeem heeft een bestaande MariaDB 5-database gedetecteerd.
In de volgende stap wordt uw database van MariaDB 5 naar MariaDB 10 gemigreerd.
Voer de gebruikersgegevens van de administrator van MariaDB 5 om door te gaan met de installatie."
wizard_migrate_title="WordPress-database migreren"
wizard_remove_msql_title="WordPress-database verwijderen"
wizard_remove_msql_desc="Bij verwijdering van de WordPress-database worden alle gegevens verwijderd."
wizard_msql_password_desc_remove="Voer de gegevens van de databaseadministrator in om de WordPress-database te verwijderen."
wizard_admin_acc="Account"
wizard_admin_pass="Wachtwoord"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile.sh 0000755 0000041 0000041 00000045543 13571663560 016640 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Set up WordPress Database"
wizard_db_name_desc="Please enter the database name for WordPress."
wizard_db_name_label="Database name"
wizard_m10_desc="Please enter the administrator credentials of MariaDB 10 to proceed with WordPress database settings."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Please create a new exclusive database account for WordPress to use existing/new data."
wizard_set_data_title="Set up WordPress"
wizard_found_backup="Please select a method to import data."
wizard_decide_restore="WordPress database already exists.
Please select either of the following actions:"
wizard_restore="Use existing data"
wizard_create_new="Clean install (All existing data, including configuration files and the database, will be removed.)"
wizard_db_user_account_desc="Database user account"
wizard_db_user_password_desc="Database user password"
wizard_migrate_note="The latest version of WordPress only supports MariaDB 10.
The system has detected an existing MariaDB 5 database.
In the next step, your database will be migrated from MariaDB 5 to MariaDB 10.
Please enter the administrator credentials of MariaDB 5 to proceed with the installation."
wizard_migrate_title="Migrate WordPress Database"
wizard_remove_msql_title="Remove WordPress database"
wizard_remove_msql_desc="If the WordPress database is removed, all the data will be deleted."
wizard_msql_password_desc_remove="Please enter the credentials of the database administrator to remove the WordPress database."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_ita.sh 0000755 0000041 0000041 00000030061 13571663560 020044 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurare il database WordPress"
wizard_db_name_desc="Immettere il nome database per il database WordPress."
wizard_db_name_label="Nome database"
wizard_m10_desc="Inserire le credenziali amministratore di MariaDB 10 per procedere con le impostazioni del database WordPress."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Creare un nuovo account database esclusivo per WordPress per usare i dati nuovi/esistenti."
wizard_set_data_title="Configurare WordPress"
wizard_found_backup="Selezionare un metodo per importare i dati."
wizard_decide_restore="Il database WordPress esiste già.
Selezionare una delle seguenti azioni:"
wizard_restore="Usare i dati esistenti"
wizard_create_new="Cancellare l'installazione (tutti i dati esistenti, inclusi i file di configurazione e il database, saranno rimossi)."
wizard_db_user_account_desc="Account utente database"
wizard_db_user_password_desc="Password utente database"
wizard_migrate_note="L'ultima versione di WordPress supporta solo MariaDB 10.
Il sistema ha rilevato un database MariaDB 5 esistente.
Nel prossimo passaggio, il database sarà migrato da MariaDB 5 a MariaDB 10.
Inserire le credenziali amministratore di MariaDB 5 per procedere con l'installazione."
wizard_migrate_title="Migrare il database WordPress"
wizard_remove_msql_title="Rimuovi database WordPress"
wizard_remove_msql_desc="Se il database WordPress viene rimosso, tutti i dati saranno eliminati."
wizard_msql_password_desc_remove="Inserire le credenziali dell'amministratore del database per rimuovere il database WordPress."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_rus.sh 0000755 0000041 0000041 00000047327 13571663560 017533 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Настроить базу данных WordPress"
wizard_db_name_desc="Введите имя базы данных WordPress."
wizard_db_name_label="Имя базы данных"
wizard_m10_desc="Введите учетные данные администратора MariaDB 10 для использования настроек базы данных WordPress."
wizard_admin_acc="Учетная запись"
wizard_admin_pass="Пароль"
wizard_set_db_desc="Создайте новую эксклюзивную учетную запись базы данных для WordPress для использования существующих/новых данных."
wizard_set_data_title="Настроить WordPress"
wizard_found_backup="Выберите способ импорта данных."
wizard_decide_restore="WordPress База данных уже существует.
Выберите одно из следующих действий."
wizard_restore="Использовать существующие данные"
wizard_create_new="Чистая установка (все имеющиеся данные, включая файлы конфигурации и базу данных, будут удалены)."
wizard_db_user_account_desc="Учетная запись пользователя базы данных"
wizard_db_user_password_desc="Пароль пользователя базы данных"
wizard_migrate_note="Последняя версия WordPress поддерживает только MariaDB 10.
Система обнаружила существующую базу данных MariaDB 5.
На следующем этапе ваша база данных будет перенесена из MariaDB 5 в MariaDB 10.
Введите учетные данные администратора MariaDB 5 для продолжения установки."
wizard_migrate_title="Перенести базу данных WordPress"
wizard_remove_msql_title="Удалить базу данных WordPress"
wizard_remove_msql_desc="В случае удаления базы данных WordPress все данные будут удалены."
wizard_msql_password_desc_remove="Введите учетные данные администратора базы данных, чтобы удалить базу данных WordPress."
wizard_admin_acc="Учетная запись"
wizard_admin_pass="Пароль"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_fre.sh 0000755 0000041 0000041 00000050040 13571663560 017477 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurer la base de données WordPress"
wizard_db_name_desc="Veuillez entrer le nom de la base de données WordPress."
wizard_db_name_label="Nom de base de données"
wizard_m10_desc="Saisissez les identifiants de l'administrateur de MariaDB 10 pour passer à la configuration des paramètres de la base de données WordPress."
wizard_admin_acc="Compte"
wizard_admin_pass="Mot de passe"
wizard_set_db_desc="Créez un nouveau compte exclusif de base de données pour WordPress pour utiliser des données existantes ou de nouvelles données."
wizard_set_data_title="Configurer WordPress"
wizard_found_backup="Sélectionnez une méthode d'importation des données."
wizard_decide_restore="La base de données WordPress existe déjà.
Sélectionnez l'une des actions suivantes :"
wizard_restore="Utiliser les données existantes"
wizard_create_new="Nettoyer l'installation (Toutes les données existantes, notamment les fichiers de configuration et la base de données, seront supprimés.)"
wizard_db_user_account_desc="Compte de l'utilisateur de la base de données"
wizard_db_user_password_desc="Mot de passe de l'utilisateur de la base de données"
wizard_migrate_note="La dernière version de WordPress ne prend en charge que MariaDB 10.
Le système a détecté une base de données MariaDB 5.
À l'étape suivante, votre base de données sera migrée de MariaDB 5 vers MariaDB 10.
Saisissez les identifiants de l'administrateur de MariaDB 5 pour passer à l'installation."
wizard_migrate_title="Migrer la base de données WordPress"
wizard_remove_msql_title="Supprimer la base de données WordPress"
wizard_remove_msql_desc="Si la base de données WordPress est supprimée, toutes les données seront supprimées."
wizard_msql_password_desc_remove="Saisissez les identifiants de l'administrateur de la base de données pour supprimer la base de données WordPress."
wizard_admin_acc="Compte"
wizard_admin_pass="Mot de passe"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_tha.sh 0000755 0000041 0000041 00000047274 13571663560 017516 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Set up WordPress Database"
wizard_db_name_desc="Please enter the database name for WordPress."
wizard_db_name_label="Database name"
wizard_m10_desc="Please enter the administrator credentials of MariaDB 10 to proceed with WordPress database settings."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Please create a new exclusive database account for WordPress to use existing/new data."
wizard_set_data_title="Set up WordPress"
wizard_found_backup="Please select a method to import data."
wizard_decide_restore="WordPress database already exists.
Please select either of the following actions:"
wizard_restore="Use existing data"
wizard_create_new="Clean install (All existing data, including configuration files and the database, will be removed.)"
wizard_db_user_account_desc="Database user account"
wizard_db_user_password_desc="Database user password"
wizard_migrate_note="The latest version of WordPress only supports MariaDB 10.
The system has detected an existing MariaDB 5 database.
In the next step, your database will be migrated from MariaDB 5 to MariaDB 10.
Please enter the administrator credentials of MariaDB 5 to proceed with the installation."
wizard_migrate_title="Migrate WordPress Database"
wizard_remove_msql_title="Remove WordPress database"
wizard_remove_msql_desc="If the WordPress database is removed, all the data will be deleted."
wizard_msql_password_desc_remove="Please enter the credentials of the database administrator to remove the WordPress database."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_rus.sh 0000755 0000041 0000041 00000031550 13571663560 020104 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Настроить базу данных WordPress"
wizard_db_name_desc="Введите имя базы данных WordPress."
wizard_db_name_label="Имя базы данных"
wizard_m10_desc="Введите учетные данные администратора MariaDB 10 для использования настроек базы данных WordPress."
wizard_admin_acc="Учетная запись"
wizard_admin_pass="Пароль"
wizard_set_db_desc="Создайте новую эксклюзивную учетную запись базы данных для WordPress для использования существующих/новых данных."
wizard_set_data_title="Настроить WordPress"
wizard_found_backup="Выберите способ импорта данных."
wizard_decide_restore="WordPress База данных уже существует.
Выберите одно из следующих действий."
wizard_restore="Использовать существующие данные"
wizard_create_new="Чистая установка (все имеющиеся данные, включая файлы конфигурации и базу данных, будут удалены)."
wizard_db_user_account_desc="Учетная запись пользователя базы данных"
wizard_db_user_password_desc="Пароль пользователя базы данных"
wizard_migrate_note="Последняя версия WordPress поддерживает только MariaDB 10.
Система обнаружила существующую базу данных MariaDB 5.
На следующем этапе ваша база данных будет перенесена из MariaDB 5 в MariaDB 10.
Введите учетные данные администратора MariaDB 5 для продолжения установки."
wizard_migrate_title="Перенести базу данных WordPress"
wizard_remove_msql_title="Удалить базу данных WordPress"
wizard_remove_msql_desc="В случае удаления базы данных WordPress все данные будут удалены."
wizard_msql_password_desc_remove="Введите учетные данные администратора базы данных, чтобы удалить базу данных WordPress."
wizard_admin_acc="Учетная запись"
wizard_admin_pass="Пароль"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_nld.sh 0000755 0000041 0000041 00000030162 13571663560 020046 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress-database instellen"
wizard_db_name_desc="Voer de databasenaam voor de WordPress-database in. "
wizard_db_name_label="Databasenaam"
wizard_m10_desc="Voer de gebruikersgegevens van de administrator van MariaDB 10 in om door te gaan met de WordPress-database-instellingen."
wizard_admin_acc="Account"
wizard_admin_pass="Wachtwoord"
wizard_set_db_desc="Gebruik bestaande/nieuwe gegevens om een nieuwe exclusieve database-account voor WordPress te maken."
wizard_set_data_title="WordPress instellen"
wizard_found_backup="Selecteer een methode om gegevens te importeren."
wizard_decide_restore="De WordPress-database bestaat al.
Selecteer een van de volgende handelingen:"
wizard_restore="Bestaande gegevens gebruiken"
wizard_create_new="Installatie verwijderen (alle bestaande gegevens, inclusief configuratiebestanden en database, worden verwijderd.)"
wizard_db_user_account_desc="Databasegebruikersaccount"
wizard_db_user_password_desc="Databasegebruikerwachtwoord"
wizard_migrate_note="Alleen de laatste versie van WordPress ondersteunt MariaDB 10.
Het systeem heeft een bestaande MariaDB 5-database gedetecteerd.
In de volgende stap wordt uw database van MariaDB 5 naar MariaDB 10 gemigreerd.
Voer de gebruikersgegevens van de administrator van MariaDB 5 om door te gaan met de installatie."
wizard_migrate_title="WordPress-database migreren"
wizard_remove_msql_title="WordPress-database verwijderen"
wizard_remove_msql_desc="Bij verwijdering van de WordPress-database worden alle gegevens verwijderd."
wizard_msql_password_desc_remove="Voer de gegevens van de databaseadministrator in om de WordPress-database te verwijderen."
wizard_admin_acc="Account"
wizard_admin_pass="Wachtwoord"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_rus.sh 0000755 0000041 0000041 00000051060 13571663560 017537 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Настроить базу данных WordPress"
wizard_db_name_desc="Введите имя базы данных WordPress."
wizard_db_name_label="Имя базы данных"
wizard_m10_desc="Введите учетные данные администратора MariaDB 10 для использования настроек базы данных WordPress."
wizard_admin_acc="Учетная запись"
wizard_admin_pass="Пароль"
wizard_set_db_desc="Создайте новую эксклюзивную учетную запись базы данных для WordPress для использования существующих/новых данных."
wizard_set_data_title="Настроить WordPress"
wizard_found_backup="Выберите способ импорта данных."
wizard_decide_restore="WordPress База данных уже существует.
Выберите одно из следующих действий."
wizard_restore="Использовать существующие данные"
wizard_create_new="Чистая установка (все имеющиеся данные, включая файлы конфигурации и базу данных, будут удалены)."
wizard_db_user_account_desc="Учетная запись пользователя базы данных"
wizard_db_user_password_desc="Пароль пользователя базы данных"
wizard_migrate_note="Последняя версия WordPress поддерживает только MariaDB 10.
Система обнаружила существующую базу данных MariaDB 5.
На следующем этапе ваша база данных будет перенесена из MariaDB 5 в MariaDB 10.
Введите учетные данные администратора MariaDB 5 для продолжения установки."
wizard_migrate_title="Перенести базу данных WordPress"
wizard_remove_msql_title="Удалить базу данных WordPress"
wizard_remove_msql_desc="В случае удаления базы данных WordPress все данные будут удалены."
wizard_msql_password_desc_remove="Введите учетные данные администратора базы данных, чтобы удалить базу данных WordPress."
wizard_admin_acc="Учетная запись"
wizard_admin_pass="Пароль"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_ptb.sh 0000755 0000041 0000041 00000030231 13571663560 020053 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurar banco de dados do WordPress"
wizard_db_name_desc="Digite o nome do banco de dados do WordPress."
wizard_db_name_label="Nome do banco de dados"
wizard_m10_desc="Insira as credenciais de administrador do MariaDB 10 para prosseguir com as configurações do banco de dados do WordPress."
wizard_admin_acc="Conta"
wizard_admin_pass="Senha"
wizard_set_db_desc="Crie uma conta nova e exclusiva de banco de dados para o WordPress usar dados existentes/novos."
wizard_set_data_title="Configurar WordPress"
wizard_found_backup="Selecione um método parar importar os dados."
wizard_decide_restore="WordPress o bando de dados já existe.
Selecione uma das seguintes ações:"
wizard_restore="Usar dados existentes"
wizard_create_new="Limpar instalação (todos os dados existentes, incluindo arquivos de configuração e o banco de dados, serão removidos.)"
wizard_db_user_account_desc="Conta de usuário de banco de dados"
wizard_db_user_password_desc="Senha do usuário de banco de dados"
wizard_migrate_note="A versão mais recente do WordPress só oferece suporte ao MariaDB 10.
O sistema detectou um banco de dados já existente do MariaDB 5.
Na próxima etapa, o banco de dados será migrado do MariaDB 5 para o MariaDB 10.
Insira as credenciais de administrador do MariaDB 5 para prosseguir com a instalação."
wizard_migrate_title="Migrar banco de dados do WordPress"
wizard_remove_msql_title="Remover banco de dados do WordPress"
wizard_remove_msql_desc="Se o banco de dados do WordPress for removido, todos os dados serão excluídos."
wizard_msql_password_desc_remove="Digite as credenciais do administrador de banco de dados para remover o banco de dados do WordPress."
wizard_admin_acc="Conta"
wizard_admin_pass="Senha"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_ptg.sh 0000755 0000041 0000041 00000046037 13571663560 017511 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurar base de dados do WordPress"
wizard_db_name_desc="Introduza o nome da base de dados para WordPress."
wizard_db_name_label="Nome da base de dados"
wizard_m10_desc="Introduza as credenciais do administrador de MariaDB 10 para continuar as definições da base de dados do WordPress."
wizard_admin_acc="Conta"
wizard_admin_pass="Palavra-passe"
wizard_set_db_desc="Crie uma nova conta de base de dados exclusiva para o WordPress para utilizar os dados existentes/novos."
wizard_set_data_title="Configurar WordPress"
wizard_found_backup="Selecione um método para importar dados."
wizard_decide_restore="WordPress a base de dados já existe.
Selecione uma das seguintes ações:"
wizard_restore="Utilizar os dados existentes"
wizard_create_new="Limpar a instalação (todos os dados existentes, incluindo os ficheiros de configuração e a base de dados, serão removidos.)"
wizard_db_user_account_desc="Conta de utilizador de base de dados "
wizard_db_user_password_desc="Palavra-passe do utilizador de base de dados"
wizard_migrate_note="A versão mais recente do WordPress só suporta MariaDB 10.
O sistema detetou uma base de dados MariaDB 5 existente.
No passo seguinte, a sua base de dados será migrada de MariaDB 5 para MariaDB 10.
Introduza as credenciais do administrador de MariaDB 5 para continuar com a instalação."
wizard_migrate_title="Migrar a base de dados da WordPress"
wizard_remove_msql_title="Remover base de dados WordPress"
wizard_remove_msql_desc="Se a base de dados do WordPress for removida, todos os dados serão eliminados."
wizard_msql_password_desc_remove="Introduza as credenciais de administrador de base de dados de forma a remover a base de dados WordPress."
wizard_admin_acc="Conta"
wizard_admin_pass="Palavra-passe"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_krn.sh 0000755 0000041 0000041 00000030371 13571663560 020065 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress 데이터베이스 설정"
wizard_db_name_desc="Please enter database name for WordPress."
wizard_db_name_label="데이터베이스 이름"
wizard_m10_desc="WordPress 데이터베이스 설정을 진행하려면 MariaDB 10의 관리자 자격 증명을 입력하십시오."
wizard_admin_acc="계정"
wizard_admin_pass="패스워드"
wizard_set_db_desc="기존/새 데이터를 사용하려면 WordPress에 대한 새 독점 데이터베이스 계정을 만드십시오."
wizard_set_data_title="설정 WordPress"
wizard_found_backup="데이터를 가져올 방법을 선택하십시오."
wizard_decide_restore="WordPress 데이터베이스가 이미 있습니다.
다음 작업 중 하나를 선택하십시오."
wizard_restore="기존 데이터 사용"
wizard_create_new="설치 정리(구성 파일 및 데이터베이스를 포함한 모든 기존 데이터가 제거됩니다.)"
wizard_db_user_account_desc="데이터베이스 사용자 계정"
wizard_db_user_password_desc="데이터베이스 사용자 패스워드"
wizard_migrate_note="WordPress의 최신 버전은 MariaDB 10만 지원합니다.
시스템에서 기존 MariaDB 5 데이터베이스를 감지했습니다.
다음 단계에서는 데이터베이스가 MariaDB 5에서 MariaDB 10으로 마이그레이션됩니다.
설치를 진행하려면 MariaDB 5의 관리자 자격 증명을 입력하십시오."
wizard_migrate_title="WordPress 데이터베이스 마이그레이션"
wizard_remove_msql_title="WordPress 데이터베이스 제거"
wizard_remove_msql_desc="WordPress 데이터베이스가 제거되면 모든 데이터가 삭제됩니다."
wizard_msql_password_desc_remove="WordPress 데이터베이스를 제거하려면 데이터베이스 관리자 자격 증명을 입력하십시오."
wizard_admin_acc="계정"
wizard_admin_pass="패스워드"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_chs.sh 0000755 0000041 0000041 00000045337 13571663560 017476 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="设置 WordPress 数据库"
wizard_db_name_desc="请为 WordPress 数据库输入数据库名称。 "
wizard_db_name_label="数据库名称"
wizard_m10_desc="请输入 MariaDB 10 管理员的帐户密码,继续 WordPress 数据库设置。"
wizard_admin_acc="帐号"
wizard_admin_pass="密码"
wizard_set_db_desc="若要使用现有/全新数据,请为 WordPress 创建数据库专属帐户。"
wizard_set_data_title="设置 WordPress"
wizard_found_backup="请选择数据导入方式。"
wizard_decide_restore="WordPress 数据库已存在。
请选择下列操作之一:"
wizard_restore="使用现有数据"
wizard_create_new="全新安装(包括配置文件及数据库的原有数据将全部移除)。"
wizard_db_user_account_desc="数据库用户帐户"
wizard_db_user_password_desc="数据库用户密码"
wizard_migrate_note="最新版本的 WordPress 仅支持 MariaDB 10。
系统已检测到现有 MariaDB 5 数据库。
在下一步中,系统会将 MariaDB 5 数据库迁移至 MariaDB 10。
请输入 MariaDB 5 管理员的帐户密码,以继续安装。"
wizard_migrate_title="迁移 WordPress 数据库"
wizard_remove_msql_title="删除 WordPress 数据库"
wizard_remove_msql_desc="如果移除 WordPress 数据库,所有数据将会删除。"
wizard_msql_password_desc_remove="请输入数据库管理员的用户凭据以删除 WordPress 数据库。"
wizard_admin_acc="帐号"
wizard_admin_pass="密码"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_csy.sh 0000755 0000041 0000041 00000047445 13571663560 017540 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Nastavit databázi WordPress"
wizard_db_name_desc="Zadejte název databáze WordPress. "
wizard_db_name_label="Název databáze"
wizard_m10_desc="Chcete-li pokračovat v nastavení databáze WordPress, zadejte přihlašovací údaje správce pro databázi MariaDB 10."
wizard_admin_acc="Účet"
wizard_admin_pass="Heslo"
wizard_set_db_desc="Chcete-li použít stávající nebo nová data, vytvořte nový vyhrazený účet databáze pro aplikaci WordPress."
wizard_set_data_title="Nastavit WordPress"
wizard_found_backup="Vyberte způsob importu dat."
wizard_decide_restore="WordPress databáze již existuje.
Vyberte některou z následujících akcí:"
wizard_restore="Použít stávající data"
wizard_create_new="Čistá instalace (Odstraní se všechna stávající data včetně konfiguračních souborů a databáze.)"
wizard_db_user_account_desc="Účet uživatele databáze"
wizard_db_user_password_desc="Heslo uživatele databáze"
wizard_migrate_note="Nejnovější verze aplikace WordPress podporuje pouze databázi MariaDB 10.
Systém nalezl stávající databázi MariaDB 5.
V následujícím kroku bude vaše databáze migrována z verze MariaDB 5 do verze MariaDB 10.
Chcete-li pokračovat v instalaci, zadejte přihlašovací údaje správce pro databázi MariaDB 5."
wizard_migrate_title="Migrace databáze WordPress"
wizard_remove_msql_title="Odebrat databázi WordPress"
wizard_remove_msql_desc="Pokud odeberete databázi WordPress, odstraní se veškerá data."
wizard_msql_password_desc_remove="Databázi WordPress bude možné odebrat po zadání přihlašovacích údajů správce databáze."
wizard_admin_acc="Účet"
wizard_admin_pass="Heslo"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_ger.sh 0000755 0000041 0000041 00000047601 13571663560 017511 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress-Datenbank einrichten"
wizard_db_name_desc="Bitte geben Sie den Datenbanknamen für die WordPress Datenbank ein."
wizard_db_name_label="Datenbankname"
wizard_m10_desc="Bitte geben Sie die Administrator-Zugriffsdaten für MariaDB 10 ein, um mit den WordPress-Datenbankeinstellungen fortzufahren."
wizard_admin_acc="Konto"
wizard_admin_pass="Passwort"
wizard_set_db_desc="Bitte erstellen Sie ein neues exklusives Datenbankkonto für WordPress, um vorhandene/neue Daten zu verwenden."
wizard_set_data_title="WordPress einrichten"
wizard_found_backup="Bitte wählen Sie eine Methode, um Daten zu importieren."
wizard_decide_restore="WordPress-Datenbank ist bereits vorhanden.
Bitte wählen Sie eine der folgenden Aktionen aus:"
wizard_restore="Vorhandene Daten verwenden"
wizard_create_new="Installation reinigen (sämtliche vorhandenen Daten, einschließlich Konfigurationsdateien und die Datenbank, werden entfernt.)"
wizard_db_user_account_desc="Datenbank-Benutzerkonto"
wizard_db_user_password_desc="Datenbankbenutzer-Kennwort"
wizard_migrate_note="Die neueste Version von WordPress unterstützt nur MariaDB 10.
Das System hat eine vorhandene MariaDB 5-Datenbank erkannt.
Im nächsten Schritt wird Ihre Datenbank von MariaDB 5 zu MariaDB 10 migriert.
Bitte geben Sie die admin-Zugriffsdaten von MariaDB 5 ein, um die Installation fortzusetzen."
wizard_migrate_title="WordPress-Datenbank migrieren"
wizard_remove_msql_title="WordPress Datenbank entfernen"
wizard_remove_msql_desc="Wenn die WordPress-Datenbank entfernt wird, werden sämtliche Daten gelöscht."
wizard_msql_password_desc_remove="Geben Sie die Anmeldeinformationen des Datenbank-Administrators ein, um die WordPress-Datenbank zu entfernen."
wizard_admin_acc="Konto"
wizard_admin_pass="Passwort"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_trk.sh 0000755 0000041 0000041 00000030062 13571663560 020070 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress Veritabanını Kur"
wizard_db_name_desc="Lütfen WordPress veritabanı için veritabanı adını girin. "
wizard_db_name_label="Veritabanı adı"
wizard_m10_desc="Lütfen MariaDB 10'un yönetici bilgilerini girerek WordPress veritabanı ayarlarına geçin."
wizard_admin_acc="Hesap"
wizard_admin_pass="Parola"
wizard_set_db_desc="Mevcut/yeni verileri kullanmak üzere WordPress için yeni bir özel veritabanı hesabı oluşturun."
wizard_set_data_title="WordPress kur"
wizard_found_backup="Lütfen verileri içeri aktarmak için bir yöntem seçin."
wizard_decide_restore="WordPress veritabanı zaten mevcut.
Lütfen aşağıdaki eylemlerden birisini seçin:"
wizard_restore="Mevcut verileri kullan"
wizard_create_new="Kurulumu kaldır (Tüm mevcut veriler, yapılandırma dosyaları ve veritabanı dahil, kaldırılacaktır.)"
wizard_db_user_account_desc="Veritabanı kullanıcı hesabı"
wizard_db_user_password_desc="Veritabanı kullanıcı parolası"
wizard_migrate_note="WordPress son sürümü sadece MariaDB 10 destekler.
Sistem mevcut bir MariaDB 5 veritabanını algıladı.
Sonraki adımda, veritabanınız MariaDB 5'den MariaDB 10'a taşınacaktır.
Lütfen kuruluma geçmek için MariaDB 5 yönetici bilgilerini girin."
wizard_migrate_title="WordPress Veritabanını Taşı"
wizard_remove_msql_title="WordPress veritabanını kaldır"
wizard_remove_msql_desc="WordPress veritabanı kaldırılırsa, tüm veriler silinecektir."
wizard_msql_password_desc_remove="WordPress veritabanını kaldırmak için lütfen veritabanı yöneticisinin bilgilerini girin."
wizard_admin_acc="Hesap"
wizard_admin_pass="Parola"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_dan.sh 0000755 0000041 0000041 00000030027 13571663560 020033 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Konfigurer WordPress-database"
wizard_db_name_desc="Indtast databasenavnet på WordPress-databasen."
wizard_db_name_label="Databasenavn"
wizard_m10_desc="Indtast administratorlegitimationsoplysninger for MariaDB 10 for at fortsætte med WordPress-databaseindstillinger."
wizard_admin_acc="Konto"
wizard_admin_pass="Adgangskode"
wizard_set_db_desc="Opret en ny eksklusiv databasekonto til WordPress til brug med eksisterende/nye data."
wizard_set_data_title="Konfigurer WordPress"
wizard_found_backup="Vælg en metode til at importere data."
wizard_decide_restore="WordPress-databasen findes allerede.
Vælg en af følgende handlinger:"
wizard_restore="Brug eksisterende data"
wizard_create_new="Ren installation (alle eksisterende data, herunder konfigurationsfiler og databasen bliver fjernet)."
wizard_db_user_account_desc="Brugerkonto for database"
wizard_db_user_password_desc="Databasebrugeradgangskode"
wizard_migrate_note="Den seneste version af WordPress understøtter kun MariaDB 10.
Systemet har registreret en eksisterende MariaDB 5-database.
I næste trin bliver databasen overflyttet fra MariaDB 5 til MariaDB 10.
Indtast administratorlegitimationsoplysninger for MariaDB 5 for at fortsætte med installationen."
wizard_migrate_title="Overflyt WordPress-database"
wizard_remove_msql_title="Fjern WordPress-databasen"
wizard_remove_msql_desc="Hvis WordPress-databasen fjernes, bliver alle data slettet."
wizard_msql_password_desc_remove="Indtast legitimationsoplysningerne for databaseadministratoren for at fjerne WordPress-databasen."
wizard_admin_acc="Konto"
wizard_admin_pass="Adgangskode"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_nor.sh 0000755 0000041 0000041 00000045554 13571663560 017520 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Sett opp WordPress-database"
wizard_db_name_desc="Du må skrive inn databasenavnet for WordPress-databasen. "
wizard_db_name_label="Databasenavn"
wizard_m10_desc="Angi administratorens brukerinformasjon for MariaDB 10 for å fortsette med WordPress-databaseinnstillingen."
wizard_admin_acc="Konto"
wizard_admin_pass="Passord"
wizard_set_db_desc="Opprett en ny eksklusiv databasekonto for WordPress for å bruke eksisterende/nye data."
wizard_set_data_title="Sett opp WordPress"
wizard_found_backup="Velg en metode for å importere data."
wizard_decide_restore="WordPress-databasen eksisterer allerede.
Velg en av følgende handlinger:"
wizard_restore="Bruk eksisterende data"
wizard_create_new="Ren installasjon (alle eksisterende data, inkludert konfigurasjonsfiler og databasen, blir fjernet.)"
wizard_db_user_account_desc="Brukerkonto for database"
wizard_db_user_password_desc="Passord for databasebruker"
wizard_migrate_note="Den nyeste versjonen av WordPress støtter kun MariaDB 10.
Systemet har oppdaget en eksisterende MariaDB 5-database.
I det neste trinnet blir databasen overført fra MariaDB 5 til MariaDB 10.
Angi administratorens brukerinformasjon for MariaDB 5 for å fortsette installasjonen."
wizard_migrate_title="Overfør WordPress-database"
wizard_remove_msql_title="Fjern WordPress-database"
wizard_remove_msql_desc="Hvis du fjerner WordPress-databasen, vil alle data bli slettet."
wizard_msql_password_desc_remove="Angi brukerinformasjonen til databaseadministratoren for å fjerne WordPress-databasen."
wizard_admin_acc="Konto"
wizard_admin_pass="Passord"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/wizard_common 0000644 0000041 0000041 00000005207 13571663444 016102 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
WIZARD_UIFILES/install_uifile.sh 0000755 0000041 0000041 00000047274 13571663560 016662 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Set up WordPress Database"
wizard_db_name_desc="Please enter the database name for WordPress."
wizard_db_name_label="Database name"
wizard_m10_desc="Please enter the administrator credentials of MariaDB 10 to proceed with WordPress database settings."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Please create a new exclusive database account for WordPress to use existing/new data."
wizard_set_data_title="Set up WordPress"
wizard_found_backup="Please select a method to import data."
wizard_decide_restore="WordPress database already exists.
Please select either of the following actions:"
wizard_restore="Use existing data"
wizard_create_new="Clean install (All existing data, including configuration files and the database, will be removed.)"
wizard_db_user_account_desc="Database user account"
wizard_db_user_password_desc="Database user password"
wizard_migrate_note="The latest version of WordPress only supports MariaDB 10.
The system has detected an existing MariaDB 5 database.
In the next step, your database will be migrated from MariaDB 5 to MariaDB 10.
Please enter the administrator credentials of MariaDB 5 to proceed with the installation."
wizard_migrate_title="Migrate WordPress Database"
wizard_remove_msql_title="Remove WordPress database"
wizard_remove_msql_desc="If the WordPress database is removed, all the data will be deleted."
wizard_msql_password_desc_remove="Please enter the credentials of the database administrator to remove the WordPress database."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_cht.sh 0000755 0000041 0000041 00000027537 13571663560 020063 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="設定 WordPress 資料庫"
wizard_db_name_desc="請輸入 WordPress 資料庫名稱。"
wizard_db_name_label="資料庫名稱"
wizard_m10_desc="請輸入 MariaDB 10 管理者的帳號密碼,以進行 WordPress 資料庫設定。"
wizard_admin_acc="帳號"
wizard_admin_pass="密碼"
wizard_set_db_desc="請為 WordPress 建立資料庫專屬帳號,以使用原有/全新資料。"
wizard_set_data_title="設定 WordPress"
wizard_found_backup="請選擇資料匯入方式。"
wizard_decide_restore="WordPress 資料庫已存在。
請選擇下方任一動作:"
wizard_restore="使用原有資料"
wizard_create_new="全新安裝 (包含設定檔及資料庫的原有資料將全部被移除。)"
wizard_db_user_account_desc="資料庫使用者帳號"
wizard_db_user_password_desc="資料庫使用者密碼"
wizard_migrate_note="最新版本的 WordPress 僅支援 MariaDB 10。
系統已偵測到 MariaDB 5 的資料庫,在下個步驟中,系統會將 MariaDB 5 資料庫轉移至 MariaDB 10。
請輸入 MariaDB 5 管理者的帳號密碼,以進行安裝。"
wizard_migrate_title="轉移 WordPress 資料庫"
wizard_remove_msql_title="移除 WordPress 資料庫"
wizard_remove_msql_desc="若移除 WordPress 資料庫,全部資料將被刪除。"
wizard_msql_password_desc_remove="請輸入資料庫管理者的帳號密碼來移除 WordPress 資料庫。"
wizard_admin_acc="帳號"
wizard_admin_pass="密碼"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_krn.sh 0000755 0000041 0000041 00000047701 13571663560 017527 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress 데이터베이스 설정"
wizard_db_name_desc="Please enter database name for WordPress."
wizard_db_name_label="데이터베이스 이름"
wizard_m10_desc="WordPress 데이터베이스 설정을 진행하려면 MariaDB 10의 관리자 자격 증명을 입력하십시오."
wizard_admin_acc="계정"
wizard_admin_pass="패스워드"
wizard_set_db_desc="기존/새 데이터를 사용하려면 WordPress에 대한 새 독점 데이터베이스 계정을 만드십시오."
wizard_set_data_title="설정 WordPress"
wizard_found_backup="데이터를 가져올 방법을 선택하십시오."
wizard_decide_restore="WordPress 데이터베이스가 이미 있습니다.
다음 작업 중 하나를 선택하십시오."
wizard_restore="기존 데이터 사용"
wizard_create_new="설치 정리(구성 파일 및 데이터베이스를 포함한 모든 기존 데이터가 제거됩니다.)"
wizard_db_user_account_desc="데이터베이스 사용자 계정"
wizard_db_user_password_desc="데이터베이스 사용자 패스워드"
wizard_migrate_note="WordPress의 최신 버전은 MariaDB 10만 지원합니다.
시스템에서 기존 MariaDB 5 데이터베이스를 감지했습니다.
다음 단계에서는 데이터베이스가 MariaDB 5에서 MariaDB 10으로 마이그레이션됩니다.
설치를 진행하려면 MariaDB 5의 관리자 자격 증명을 입력하십시오."
wizard_migrate_title="WordPress 데이터베이스 마이그레이션"
wizard_remove_msql_title="WordPress 데이터베이스 제거"
wizard_remove_msql_desc="WordPress 데이터베이스가 제거되면 모든 데이터가 삭제됩니다."
wizard_msql_password_desc_remove="WordPress 데이터베이스를 제거하려면 데이터베이스 관리자 자격 증명을 입력하십시오."
wizard_admin_acc="계정"
wizard_admin_pass="패스워드"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_ger.sh 0000755 0000041 0000041 00000030271 13571663560 020047 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress-Datenbank einrichten"
wizard_db_name_desc="Bitte geben Sie den Datenbanknamen für die WordPress Datenbank ein."
wizard_db_name_label="Datenbankname"
wizard_m10_desc="Bitte geben Sie die Administrator-Zugriffsdaten für MariaDB 10 ein, um mit den WordPress-Datenbankeinstellungen fortzufahren."
wizard_admin_acc="Konto"
wizard_admin_pass="Passwort"
wizard_set_db_desc="Bitte erstellen Sie ein neues exklusives Datenbankkonto für WordPress, um vorhandene/neue Daten zu verwenden."
wizard_set_data_title="WordPress einrichten"
wizard_found_backup="Bitte wählen Sie eine Methode, um Daten zu importieren."
wizard_decide_restore="WordPress-Datenbank ist bereits vorhanden.
Bitte wählen Sie eine der folgenden Aktionen aus:"
wizard_restore="Vorhandene Daten verwenden"
wizard_create_new="Installation reinigen (sämtliche vorhandenen Daten, einschließlich Konfigurationsdateien und die Datenbank, werden entfernt.)"
wizard_db_user_account_desc="Datenbank-Benutzerkonto"
wizard_db_user_password_desc="Datenbankbenutzer-Kennwort"
wizard_migrate_note="Die neueste Version von WordPress unterstützt nur MariaDB 10.
Das System hat eine vorhandene MariaDB 5-Datenbank erkannt.
Im nächsten Schritt wird Ihre Datenbank von MariaDB 5 zu MariaDB 10 migriert.
Bitte geben Sie die admin-Zugriffsdaten von MariaDB 5 ein, um die Installation fortzusetzen."
wizard_migrate_title="WordPress-Datenbank migrieren"
wizard_remove_msql_title="WordPress Datenbank entfernen"
wizard_remove_msql_desc="Wenn die WordPress-Datenbank entfernt wird, werden sämtliche Daten gelöscht."
wizard_msql_password_desc_remove="Geben Sie die Anmeldeinformationen des Datenbank-Administrators ein, um die WordPress-Datenbank zu entfernen."
wizard_admin_acc="Konto"
wizard_admin_pass="Passwort"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_ita.sh 0000755 0000041 0000041 00000045640 13571663560 017473 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurare il database WordPress"
wizard_db_name_desc="Immettere il nome database per il database WordPress."
wizard_db_name_label="Nome database"
wizard_m10_desc="Inserire le credenziali amministratore di MariaDB 10 per procedere con le impostazioni del database WordPress."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Creare un nuovo account database esclusivo per WordPress per usare i dati nuovi/esistenti."
wizard_set_data_title="Configurare WordPress"
wizard_found_backup="Selezionare un metodo per importare i dati."
wizard_decide_restore="Il database WordPress esiste già.
Selezionare una delle seguenti azioni:"
wizard_restore="Usare i dati esistenti"
wizard_create_new="Cancellare l'installazione (tutti i dati esistenti, inclusi i file di configurazione e il database, saranno rimossi)."
wizard_db_user_account_desc="Account utente database"
wizard_db_user_password_desc="Password utente database"
wizard_migrate_note="L'ultima versione di WordPress supporta solo MariaDB 10.
Il sistema ha rilevato un database MariaDB 5 esistente.
Nel prossimo passaggio, il database sarà migrato da MariaDB 5 a MariaDB 10.
Inserire le credenziali amministratore di MariaDB 5 per procedere con l'installazione."
wizard_migrate_title="Migrare il database WordPress"
wizard_remove_msql_title="Rimuovi database WordPress"
wizard_remove_msql_desc="Se il database WordPress viene rimosso, tutti i dati saranno eliminati."
wizard_msql_password_desc_remove="Inserire le credenziali dell'amministratore del database per rimuovere il database WordPress."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_jpn.sh 0000755 0000041 0000041 00000046466 13571663560 017514 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPressデータベースをセットアップ"
wizard_db_name_desc="WordPress データベースの名前を入力してください。 "
wizard_db_name_label="データベース名"
wizard_m10_desc="MariaDB 10の管理者の資格情報を入力してからWordPressデータベース設定に進んでください。"
wizard_admin_acc="アカウント"
wizard_admin_pass="パスワード"
wizard_set_db_desc="新しい排他的データベースをWordPressに作成してから既存/新規のデータを使用してください。"
wizard_set_data_title="WordPressをセットアップ"
wizard_found_backup="データをインポートする方法を選択してください。"
wizard_decide_restore="WordPress データベースはすでに存在します。
以下のいずれかの操作を選択してください。"
wizard_restore="既存のデータを使用"
wizard_create_new="クリーン インストール (構成ファイルやデータベースなどすべての既存のデータが削除されます。)"
wizard_db_user_account_desc="データベースのユーザー アカウント"
wizard_db_user_password_desc="データベース ユーザー パスワード"
wizard_migrate_note="WordPressの最新バージョンはMariaDB 10のみをサポートします。
システムが既存のMariaDB 5データベースを検出しました。
次のステップで、データベースはMariaDB 5からMariaDB 10に移行します。
MariaDB 5のadminの資格情報を入力してからインストールに進んでください。"
wizard_migrate_title="WordPressデータベースを移行"
wizard_remove_msql_title="WordPress データベースを削除"
wizard_remove_msql_desc="WordPress データベースを削除すると、すべてのデータが削除されます。"
wizard_msql_password_desc_remove="WordPress データベースを削除するには、データベースの管理者の認証情報を入力してください。"
wizard_admin_acc="アカウント"
wizard_admin_pass="パスワード"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_plk.sh 0000755 0000041 0000041 00000030046 13571663560 020060 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Skonfiguruj bazę danych WordPress"
wizard_db_name_desc="Wprowadź nazwę bazy danych WordPress."
wizard_db_name_label="Nazwa bazy danych"
wizard_m10_desc="Wprowadź poświadczenia administratora MariaDB 10, aby kontynuować konfigurację bazy danych WordPress."
wizard_admin_acc="Konto"
wizard_admin_pass="Hasło"
wizard_set_db_desc="Utwórz nowe odrębne konto bazy danych dla WordPress, aby użyć istniejących/nowych danych."
wizard_set_data_title="Konfiguruj WordPress"
wizard_found_backup="Wybierz metodę importu danych."
wizard_decide_restore="WordPress — baza danych już istnieje.
Wybierz dowolną z następujących akcji:"
wizard_restore="Użyj istniejących danych"
wizard_create_new="Czysta instalacja (wszystkie istniejące dane, w tym pliki konfiguracyjne i baza danych, zostaną usunięte)."
wizard_db_user_account_desc="Konto użytkownika bazy danych"
wizard_db_user_password_desc="Hasło użytkownika bazy danych"
wizard_migrate_note="Najnowsza wersja WordPress obsługuje tylko aplikację MariaDB 10.
System wykrył jedynie istniejąca bazę danych MariaDB 5.
W kolejnym kroku nastąpi migracja bazy danych z MariaDB 5 do MariaDB 10.
Wprowadź poświadczenia administratora MariaDB 5, aby kontynuować instalację."
wizard_migrate_title="Migruj bazę danych WordPress"
wizard_remove_msql_title="Usuń bazę danych WordPress"
wizard_remove_msql_desc="Po usunięciu bazy danych WordPress wszystkie dane zostaną usunięte."
wizard_msql_password_desc_remove="Wprowadź poświadczenia administratora bazy danych, aby usunąć bazę danych WordPress."
wizard_admin_acc="Konto"
wizard_admin_pass="Hasło"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_hun.sh 0000755 0000041 0000041 00000046143 13571663560 017507 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress adatbázis telepítése"
wizard_db_name_desc="Kérjük, adja meg az adatbázis nevét a WordPress-adatbázishoz. "
wizard_db_name_label="Adatbázis neve"
wizard_m10_desc="Adja meg a MariaDB 10 rendszergazdai hitelesítő adatait a(z) WordPress adatbázis beállításának folytatásához."
wizard_admin_acc="Fiók"
wizard_admin_pass="Jelszó"
wizard_set_db_desc="Ha meglévő/új adatokat szeretne használni, hozzon létre egy új exkluzív adatbázisfiókot a következőhöz: WordPress."
wizard_set_data_title="Beállítás WordPress"
wizard_found_backup="Válasszon egy módszert az adatok importálásához."
wizard_decide_restore="WordPress adatbázis már létezik.
Válasszon az alábbi műveletek közül:"
wizard_restore="Meglévő adatok használata"
wizard_create_new="Tiszta telepítés (A rendszer minden meglévő adatot, ideértve a konfigurációs fájlokat és az adatbázist eltávolít.)"
wizard_db_user_account_desc="Adatbázis-felhasználói fiók"
wizard_db_user_password_desc="Adatbázis-felhasználói jelszó"
wizard_migrate_note="A(z) WordPress legújabb verziója csak a MariaDB 10 programot támogatja.
A rendszer észlelt egy meglévő MariaDB 5 adatbázist.
A következő lépésben az adatbázist a MariaDB 5 alól áttelepítjük a MariaDB 10 alá.
A telepítés folytatásához adja meg a MariaDB 5 rendszergazdai hitelesítő adatait."
wizard_migrate_title="WordPress adatbázis áttelepítése"
wizard_remove_msql_title="WordPress–adatbázis eltávolítása"
wizard_remove_msql_desc="A(z) WordPress adatbázis eltávolításával az összes adatot is törli a rendszer."
wizard_msql_password_desc_remove="A WordPress-adatbázis eltávolításához adja meg az adatbázis-rendszergazdához tartozó bejelentkezési adatokat."
wizard_admin_acc="Fiók"
wizard_admin_pass="Jelszó"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_spn.sh 0000755 0000041 0000041 00000046073 13571663560 017517 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurar la base de datos de WordPress"
wizard_db_name_desc="Introduzca el nombre de la base de datos de WordPress."
wizard_db_name_label="Nombre de base de datos"
wizard_m10_desc="Introduzca las credenciales de administrador de MariaDB 10 para continuar con la configuración de la base de datos de WordPress."
wizard_admin_acc="Cuenta"
wizard_admin_pass="Contraseña"
wizard_set_db_desc="Cree una nueva cuenta de base de datos exclusiva para que WordPress use los datos nuevos/existentes."
wizard_set_data_title="Configurar WordPress"
wizard_found_backup="Seleccione un método para importar datos."
wizard_decide_restore="WordPress la base de datos ya existe.
Seleccione alguna de las siguientes acciones:"
wizard_restore="Utilizar los datos existentes"
wizard_create_new="Instalación limpia (se eliminarán todos los datos existentes, incluidos los archivos de configuración y la base de datos)."
wizard_db_user_account_desc="Cuenta de usuario de base de datos"
wizard_db_user_password_desc="Contraseña de usuario de base de datos"
wizard_migrate_note="La última versión de WordPress solo es compatible con MariaDB 10.
El sistema ha detectado una base de datos MariaDB 5 existente.
En el próximo paso, se migrará su base de datos de MariaDB 5 a MariaDB 10.
Introduzca las credenciales de administrador de MariaDB 5 para continuar con la instalación."
wizard_migrate_title="Migrar base de datos de WordPress"
wizard_remove_msql_title="Eliminar base de datos de WordPress"
wizard_remove_msql_desc="Si se elimina la base de datos de WordPress, se eliminarán todos los datos."
wizard_msql_password_desc_remove="Introduzca las credenciales de administrador de base de datos para eliminar la base de datos de WordPress"
wizard_admin_acc="Cuenta"
wizard_admin_pass="Contraseña"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_enu.sh 0000755 0000041 0000041 00000047274 13571663560 017531 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Set up WordPress Database"
wizard_db_name_desc="Please enter the database name for WordPress."
wizard_db_name_label="Database name"
wizard_m10_desc="Please enter the administrator credentials of MariaDB 10 to proceed with WordPress database settings."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Please create a new exclusive database account for WordPress to use existing/new data."
wizard_set_data_title="Set up WordPress"
wizard_found_backup="Please select a method to import data."
wizard_decide_restore="WordPress database already exists.
Please select either of the following actions:"
wizard_restore="Use existing data"
wizard_create_new="Clean install (All existing data, including configuration files and the database, will be removed.)"
wizard_db_user_account_desc="Database user account"
wizard_db_user_password_desc="Database user password"
wizard_migrate_note="The latest version of WordPress only supports MariaDB 10.
The system has detected an existing MariaDB 5 database.
In the next step, your database will be migrated from MariaDB 5 to MariaDB 10.
Please enter the administrator credentials of MariaDB 5 to proceed with the installation."
wizard_migrate_title="Migrate WordPress Database"
wizard_remove_msql_title="Remove WordPress database"
wizard_remove_msql_desc="If the WordPress database is removed, all the data will be deleted."
wizard_msql_password_desc_remove="Please enter the credentials of the database administrator to remove the WordPress database."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_chs.sh 0000755 0000041 0000041 00000027560 13571663560 020056 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="设置 WordPress 数据库"
wizard_db_name_desc="请为 WordPress 数据库输入数据库名称。 "
wizard_db_name_label="数据库名称"
wizard_m10_desc="请输入 MariaDB 10 管理员的帐户密码,继续 WordPress 数据库设置。"
wizard_admin_acc="帐号"
wizard_admin_pass="密码"
wizard_set_db_desc="若要使用现有/全新数据,请为 WordPress 创建数据库专属帐户。"
wizard_set_data_title="设置 WordPress"
wizard_found_backup="请选择数据导入方式。"
wizard_decide_restore="WordPress 数据库已存在。
请选择下列操作之一:"
wizard_restore="使用现有数据"
wizard_create_new="全新安装(包括配置文件及数据库的原有数据将全部移除)。"
wizard_db_user_account_desc="数据库用户帐户"
wizard_db_user_password_desc="数据库用户密码"
wizard_migrate_note="最新版本的 WordPress 仅支持 MariaDB 10。
系统已检测到现有 MariaDB 5 数据库。
在下一步中,系统会将 MariaDB 5 数据库迁移至 MariaDB 10。
请输入 MariaDB 5 管理员的帐户密码,以继续安装。"
wizard_migrate_title="迁移 WordPress 数据库"
wizard_remove_msql_title="删除 WordPress 数据库"
wizard_remove_msql_desc="如果移除 WordPress 数据库,所有数据将会删除。"
wizard_msql_password_desc_remove="请输入数据库管理员的用户凭据以删除 WordPress 数据库。"
wizard_admin_acc="帐号"
wizard_admin_pass="密码"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_sve.sh 0000755 0000041 0000041 00000030144 13571663560 020066 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Konfigurera databasen WordPress"
wizard_db_name_desc="Ange databasnamnet för WordPress databas. "
wizard_db_name_label="Databasnamn"
wizard_m10_desc="Vänligen ange administratörens autentiseringsuppgifter för MariaDB 10 för att fortsätta med databasinställningar för WordPress."
wizard_admin_acc="Konto"
wizard_admin_pass="Lösenord"
wizard_set_db_desc="Vänligen skapa ett nytt exklusivt databaskonto för WordPress för att använda befintliga/nya data."
wizard_set_data_title="Konfigurera WordPress"
wizard_found_backup="Vänligen välj en metod för att importera data."
wizard_decide_restore="Databasen WordPress finns redan.
Vänligen markera någon av följande åtgärder:"
wizard_restore="Använd befintliga data"
wizard_create_new="Ren installation (alla befintliga data, inklusive konfigurationsfiler och databasen tas bort)."
wizard_db_user_account_desc="Användarkonto för databas"
wizard_db_user_password_desc="Lösenord för databasanvändare"
wizard_migrate_note="Den senaste versionen av WordPress har bara stöd för MariaDB 10.
Systemet har upptäckt en befintlig MariaDB 5-databas.
I nästa steg blir din databas migrerad från MariaDB 5 till MariaDB 10.
Vänligen ange autentiseringsuppgifter för administratören för MariaDB 5 för att fortsätta med installationen."
wizard_migrate_title="Migrera databasen WordPress"
wizard_remove_msql_title="Ta bort WordPress-databas"
wizard_remove_msql_desc="Om databasen WordPress tas bort raderas alla data."
wizard_msql_password_desc_remove="Vänligen ange autentiseringsuppgifter för databasadministratören för att ta bort databasen för WordPress."
wizard_admin_acc="Konto"
wizard_admin_pass="Lösenord"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_default.sh 0000755 0000041 0000041 00000027764 13571663560 020733 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Set up WordPress Database"
wizard_db_name_desc="Please enter the database name for WordPress."
wizard_db_name_label="Database name"
wizard_m10_desc="Please enter the administrator credentials of MariaDB 10 to proceed with WordPress database settings."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Please create a new exclusive database account for WordPress to use existing/new data."
wizard_set_data_title="Set up WordPress"
wizard_found_backup="Please select a method to import data."
wizard_decide_restore="WordPress database already exists.
Please select either of the following actions:"
wizard_restore="Use existing data"
wizard_create_new="Clean install (All existing data, including configuration files and the database, will be removed.)"
wizard_db_user_account_desc="Database user account"
wizard_db_user_password_desc="Database user password"
wizard_migrate_note="The latest version of WordPress only supports MariaDB 10.
The system has detected an existing MariaDB 5 database.
In the next step, your database will be migrated from MariaDB 5 to MariaDB 10.
Please enter the administrator credentials of MariaDB 5 to proceed with the installation."
wizard_migrate_title="Migrate WordPress Database"
wizard_remove_msql_title="Remove WordPress database"
wizard_remove_msql_desc="If the WordPress database is removed, all the data will be deleted."
wizard_msql_password_desc_remove="Please enter the credentials of the database administrator to remove the WordPress database."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_ita.sh 0000755 0000041 0000041 00000047371 13571663560 017515 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurare il database WordPress"
wizard_db_name_desc="Immettere il nome database per il database WordPress."
wizard_db_name_label="Nome database"
wizard_m10_desc="Inserire le credenziali amministratore di MariaDB 10 per procedere con le impostazioni del database WordPress."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Creare un nuovo account database esclusivo per WordPress per usare i dati nuovi/esistenti."
wizard_set_data_title="Configurare WordPress"
wizard_found_backup="Selezionare un metodo per importare i dati."
wizard_decide_restore="Il database WordPress esiste già.
Selezionare una delle seguenti azioni:"
wizard_restore="Usare i dati esistenti"
wizard_create_new="Cancellare l'installazione (tutti i dati esistenti, inclusi i file di configurazione e il database, saranno rimossi)."
wizard_db_user_account_desc="Account utente database"
wizard_db_user_password_desc="Password utente database"
wizard_migrate_note="L'ultima versione di WordPress supporta solo MariaDB 10.
Il sistema ha rilevato un database MariaDB 5 esistente.
Nel prossimo passaggio, il database sarà migrato da MariaDB 5 a MariaDB 10.
Inserire le credenziali amministratore di MariaDB 5 per procedere con l'installazione."
wizard_migrate_title="Migrare il database WordPress"
wizard_remove_msql_title="Rimuovi database WordPress"
wizard_remove_msql_desc="Se il database WordPress viene rimosso, tutti i dati saranno eliminati."
wizard_msql_password_desc_remove="Inserire le credenziali dell'amministratore del database per rimuovere il database WordPress."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_csy.sh 0000755 0000041 0000041 00000030135 13571663560 020067 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Nastavit databázi WordPress"
wizard_db_name_desc="Zadejte název databáze WordPress. "
wizard_db_name_label="Název databáze"
wizard_m10_desc="Chcete-li pokračovat v nastavení databáze WordPress, zadejte přihlašovací údaje správce pro databázi MariaDB 10."
wizard_admin_acc="Účet"
wizard_admin_pass="Heslo"
wizard_set_db_desc="Chcete-li použít stávající nebo nová data, vytvořte nový vyhrazený účet databáze pro aplikaci WordPress."
wizard_set_data_title="Nastavit WordPress"
wizard_found_backup="Vyberte způsob importu dat."
wizard_decide_restore="WordPress databáze již existuje.
Vyberte některou z následujících akcí:"
wizard_restore="Použít stávající data"
wizard_create_new="Čistá instalace (Odstraní se všechna stávající data včetně konfiguračních souborů a databáze.)"
wizard_db_user_account_desc="Účet uživatele databáze"
wizard_db_user_password_desc="Heslo uživatele databáze"
wizard_migrate_note="Nejnovější verze aplikace WordPress podporuje pouze databázi MariaDB 10.
Systém nalezl stávající databázi MariaDB 5.
V následujícím kroku bude vaše databáze migrována z verze MariaDB 5 do verze MariaDB 10.
Chcete-li pokračovat v instalaci, zadejte přihlašovací údaje správce pro databázi MariaDB 5."
wizard_migrate_title="Migrace databáze WordPress"
wizard_remove_msql_title="Odebrat databázi WordPress"
wizard_remove_msql_desc="Pokud odeberete databázi WordPress, odstraní se veškerá data."
wizard_msql_password_desc_remove="Databázi WordPress bude možné odebrat po zadání přihlašovacích údajů správce databáze."
wizard_admin_acc="Účet"
wizard_admin_pass="Heslo"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/wizard_customized.template 0000644 0000041 0000041 00000002031 13571663444 020602 0 ustar www-data www-data #!/bin/bash
PKG_NAME=""
PKG_DIR=""
WEBSITE_ROOT=""
CONF_FILE=""
MIGRATE_VERSION=""
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
INIT_DB_NAME=""
INIT_DB_USER=""
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomHasRunWebsiteSetup()
{
local path="$1"
if [ -s "$path/$CONF_FILE" ]; then
return 0
else
return 1
fi
}
CustomSetBackupPath()
{
BACKUP_PATH="$(GetBackupPkgPath)"
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=$(get_key_value "$INFO_FILE" "$db_info")
if [ -z "$info_output" ] && [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f2)
fi
echo "$info_output"
}
CustomGetDBName()
{
CustomParseDBConf "$1" "db_name" "dbdefault"
}
CustomGetDBUser()
{
CustomParseDBConf "$1" "db_user" "dbuser"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "dbpassword"
}
WIZARD_UIFILES/install_uifile_dan.sh 0000755 0000041 0000041 00000047337 13571663560 017504 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Konfigurer WordPress-database"
wizard_db_name_desc="Indtast databasenavnet på WordPress-databasen."
wizard_db_name_label="Databasenavn"
wizard_m10_desc="Indtast administratorlegitimationsoplysninger for MariaDB 10 for at fortsætte med WordPress-databaseindstillinger."
wizard_admin_acc="Konto"
wizard_admin_pass="Adgangskode"
wizard_set_db_desc="Opret en ny eksklusiv databasekonto til WordPress til brug med eksisterende/nye data."
wizard_set_data_title="Konfigurer WordPress"
wizard_found_backup="Vælg en metode til at importere data."
wizard_decide_restore="WordPress-databasen findes allerede.
Vælg en af følgende handlinger:"
wizard_restore="Brug eksisterende data"
wizard_create_new="Ren installation (alle eksisterende data, herunder konfigurationsfiler og databasen bliver fjernet)."
wizard_db_user_account_desc="Brugerkonto for database"
wizard_db_user_password_desc="Databasebrugeradgangskode"
wizard_migrate_note="Den seneste version af WordPress understøtter kun MariaDB 10.
Systemet har registreret en eksisterende MariaDB 5-database.
I næste trin bliver databasen overflyttet fra MariaDB 5 til MariaDB 10.
Indtast administratorlegitimationsoplysninger for MariaDB 5 for at fortsætte med installationen."
wizard_migrate_title="Overflyt WordPress-database"
wizard_remove_msql_title="Fjern WordPress-databasen"
wizard_remove_msql_desc="Hvis WordPress-databasen fjernes, bliver alle data slettet."
wizard_msql_password_desc_remove="Indtast legitimationsoplysningerne for databaseadministratoren for at fjerne WordPress-databasen."
wizard_admin_acc="Konto"
wizard_admin_pass="Adgangskode"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_trk.sh 0000755 0000041 0000041 00000045641 13571663560 017517 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress Veritabanını Kur"
wizard_db_name_desc="Lütfen WordPress veritabanı için veritabanı adını girin. "
wizard_db_name_label="Veritabanı adı"
wizard_m10_desc="Lütfen MariaDB 10'un yönetici bilgilerini girerek WordPress veritabanı ayarlarına geçin."
wizard_admin_acc="Hesap"
wizard_admin_pass="Parola"
wizard_set_db_desc="Mevcut/yeni verileri kullanmak üzere WordPress için yeni bir özel veritabanı hesabı oluşturun."
wizard_set_data_title="WordPress kur"
wizard_found_backup="Lütfen verileri içeri aktarmak için bir yöntem seçin."
wizard_decide_restore="WordPress veritabanı zaten mevcut.
Lütfen aşağıdaki eylemlerden birisini seçin:"
wizard_restore="Mevcut verileri kullan"
wizard_create_new="Kurulumu kaldır (Tüm mevcut veriler, yapılandırma dosyaları ve veritabanı dahil, kaldırılacaktır.)"
wizard_db_user_account_desc="Veritabanı kullanıcı hesabı"
wizard_db_user_password_desc="Veritabanı kullanıcı parolası"
wizard_migrate_note="WordPress son sürümü sadece MariaDB 10 destekler.
Sistem mevcut bir MariaDB 5 veritabanını algıladı.
Sonraki adımda, veritabanınız MariaDB 5'den MariaDB 10'a taşınacaktır.
Lütfen kuruluma geçmek için MariaDB 5 yönetici bilgilerini girin."
wizard_migrate_title="WordPress Veritabanını Taşı"
wizard_remove_msql_title="WordPress veritabanını kaldır"
wizard_remove_msql_desc="WordPress veritabanı kaldırılırsa, tüm veriler silinecektir."
wizard_msql_password_desc_remove="WordPress veritabanını kaldırmak için lütfen veritabanı yöneticisinin bilgilerini girin."
wizard_admin_acc="Hesap"
wizard_admin_pass="Parola"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_chs.sh 0000755 0000041 0000041 00000047070 13571663560 017511 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="设置 WordPress 数据库"
wizard_db_name_desc="请为 WordPress 数据库输入数据库名称。 "
wizard_db_name_label="数据库名称"
wizard_m10_desc="请输入 MariaDB 10 管理员的帐户密码,继续 WordPress 数据库设置。"
wizard_admin_acc="帐号"
wizard_admin_pass="密码"
wizard_set_db_desc="若要使用现有/全新数据,请为 WordPress 创建数据库专属帐户。"
wizard_set_data_title="设置 WordPress"
wizard_found_backup="请选择数据导入方式。"
wizard_decide_restore="WordPress 数据库已存在。
请选择下列操作之一:"
wizard_restore="使用现有数据"
wizard_create_new="全新安装(包括配置文件及数据库的原有数据将全部移除)。"
wizard_db_user_account_desc="数据库用户帐户"
wizard_db_user_password_desc="数据库用户密码"
wizard_migrate_note="最新版本的 WordPress 仅支持 MariaDB 10。
系统已检测到现有 MariaDB 5 数据库。
在下一步中,系统会将 MariaDB 5 数据库迁移至 MariaDB 10。
请输入 MariaDB 5 管理员的帐户密码,以继续安装。"
wizard_migrate_title="迁移 WordPress 数据库"
wizard_remove_msql_title="删除 WordPress 数据库"
wizard_remove_msql_desc="如果移除 WordPress 数据库,所有数据将会删除。"
wizard_msql_password_desc_remove="请输入数据库管理员的用户凭据以删除 WordPress 数据库。"
wizard_admin_acc="帐号"
wizard_admin_pass="密码"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_hun.sh 0000755 0000041 0000041 00000047674 13571663560 017540 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress adatbázis telepítése"
wizard_db_name_desc="Kérjük, adja meg az adatbázis nevét a WordPress-adatbázishoz. "
wizard_db_name_label="Adatbázis neve"
wizard_m10_desc="Adja meg a MariaDB 10 rendszergazdai hitelesítő adatait a(z) WordPress adatbázis beállításának folytatásához."
wizard_admin_acc="Fiók"
wizard_admin_pass="Jelszó"
wizard_set_db_desc="Ha meglévő/új adatokat szeretne használni, hozzon létre egy új exkluzív adatbázisfiókot a következőhöz: WordPress."
wizard_set_data_title="Beállítás WordPress"
wizard_found_backup="Válasszon egy módszert az adatok importálásához."
wizard_decide_restore="WordPress adatbázis már létezik.
Válasszon az alábbi műveletek közül:"
wizard_restore="Meglévő adatok használata"
wizard_create_new="Tiszta telepítés (A rendszer minden meglévő adatot, ideértve a konfigurációs fájlokat és az adatbázist eltávolít.)"
wizard_db_user_account_desc="Adatbázis-felhasználói fiók"
wizard_db_user_password_desc="Adatbázis-felhasználói jelszó"
wizard_migrate_note="A(z) WordPress legújabb verziója csak a MariaDB 10 programot támogatja.
A rendszer észlelt egy meglévő MariaDB 5 adatbázist.
A következő lépésben az adatbázist a MariaDB 5 alól áttelepítjük a MariaDB 10 alá.
A telepítés folytatásához adja meg a MariaDB 5 rendszergazdai hitelesítő adatait."
wizard_migrate_title="WordPress adatbázis áttelepítése"
wizard_remove_msql_title="WordPress–adatbázis eltávolítása"
wizard_remove_msql_desc="A(z) WordPress adatbázis eltávolításával az összes adatot is törli a rendszer."
wizard_msql_password_desc_remove="A WordPress-adatbázis eltávolításához adja meg az adatbázis-rendszergazdához tartozó bejelentkezési adatokat."
wizard_admin_acc="Fiók"
wizard_admin_pass="Jelszó"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_tha.sh 0000755 0000041 0000041 00000027764 13571663560 020063 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Set up WordPress Database"
wizard_db_name_desc="Please enter the database name for WordPress."
wizard_db_name_label="Database name"
wizard_m10_desc="Please enter the administrator credentials of MariaDB 10 to proceed with WordPress database settings."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Please create a new exclusive database account for WordPress to use existing/new data."
wizard_set_data_title="Set up WordPress"
wizard_found_backup="Please select a method to import data."
wizard_decide_restore="WordPress database already exists.
Please select either of the following actions:"
wizard_restore="Use existing data"
wizard_create_new="Clean install (All existing data, including configuration files and the database, will be removed.)"
wizard_db_user_account_desc="Database user account"
wizard_db_user_password_desc="Database user password"
wizard_migrate_note="The latest version of WordPress only supports MariaDB 10.
The system has detected an existing MariaDB 5 database.
In the next step, your database will be migrated from MariaDB 5 to MariaDB 10.
Please enter the administrator credentials of MariaDB 5 to proceed with the installation."
wizard_migrate_title="Migrate WordPress Database"
wizard_remove_msql_title="Remove WordPress database"
wizard_remove_msql_desc="If the WordPress database is removed, all the data will be deleted."
wizard_msql_password_desc_remove="Please enter the credentials of the database administrator to remove the WordPress database."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_nld.sh 0000755 0000041 0000041 00000047472 13571663560 017517 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress-database instellen"
wizard_db_name_desc="Voer de databasenaam voor de WordPress-database in. "
wizard_db_name_label="Databasenaam"
wizard_m10_desc="Voer de gebruikersgegevens van de administrator van MariaDB 10 in om door te gaan met de WordPress-database-instellingen."
wizard_admin_acc="Account"
wizard_admin_pass="Wachtwoord"
wizard_set_db_desc="Gebruik bestaande/nieuwe gegevens om een nieuwe exclusieve database-account voor WordPress te maken."
wizard_set_data_title="WordPress instellen"
wizard_found_backup="Selecteer een methode om gegevens te importeren."
wizard_decide_restore="De WordPress-database bestaat al.
Selecteer een van de volgende handelingen:"
wizard_restore="Bestaande gegevens gebruiken"
wizard_create_new="Installatie verwijderen (alle bestaande gegevens, inclusief configuratiebestanden en database, worden verwijderd.)"
wizard_db_user_account_desc="Databasegebruikersaccount"
wizard_db_user_password_desc="Databasegebruikerwachtwoord"
wizard_migrate_note="Alleen de laatste versie van WordPress ondersteunt MariaDB 10.
Het systeem heeft een bestaande MariaDB 5-database gedetecteerd.
In de volgende stap wordt uw database van MariaDB 5 naar MariaDB 10 gemigreerd.
Voer de gebruikersgegevens van de administrator van MariaDB 5 om door te gaan met de installatie."
wizard_migrate_title="WordPress-database migreren"
wizard_remove_msql_title="WordPress-database verwijderen"
wizard_remove_msql_desc="Bij verwijdering van de WordPress-database worden alle gegevens verwijderd."
wizard_msql_password_desc_remove="Voer de gegevens van de databaseadministrator in om de WordPress-database te verwijderen."
wizard_admin_acc="Account"
wizard_admin_pass="Wachtwoord"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_dan.sh 0000755 0000041 0000041 00000045606 13571663560 017462 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Konfigurer WordPress-database"
wizard_db_name_desc="Indtast databasenavnet på WordPress-databasen."
wizard_db_name_label="Databasenavn"
wizard_m10_desc="Indtast administratorlegitimationsoplysninger for MariaDB 10 for at fortsætte med WordPress-databaseindstillinger."
wizard_admin_acc="Konto"
wizard_admin_pass="Adgangskode"
wizard_set_db_desc="Opret en ny eksklusiv databasekonto til WordPress til brug med eksisterende/nye data."
wizard_set_data_title="Konfigurer WordPress"
wizard_found_backup="Vælg en metode til at importere data."
wizard_decide_restore="WordPress-databasen findes allerede.
Vælg en af følgende handlinger:"
wizard_restore="Brug eksisterende data"
wizard_create_new="Ren installation (alle eksisterende data, herunder konfigurationsfiler og databasen bliver fjernet)."
wizard_db_user_account_desc="Brugerkonto for database"
wizard_db_user_password_desc="Databasebrugeradgangskode"
wizard_migrate_note="Den seneste version af WordPress understøtter kun MariaDB 10.
Systemet har registreret en eksisterende MariaDB 5-database.
I næste trin bliver databasen overflyttet fra MariaDB 5 til MariaDB 10.
Indtast administratorlegitimationsoplysninger for MariaDB 5 for at fortsætte med installationen."
wizard_migrate_title="Overflyt WordPress-database"
wizard_remove_msql_title="Fjern WordPress-databasen"
wizard_remove_msql_desc="Hvis WordPress-databasen fjernes, bliver alle data slettet."
wizard_msql_password_desc_remove="Indtast legitimationsoplysningerne for databaseadministratoren for at fjerne WordPress-databasen."
wizard_admin_acc="Konto"
wizard_admin_pass="Adgangskode"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_plk.sh 0000755 0000041 0000041 00000047356 13571663560 017531 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Skonfiguruj bazę danych WordPress"
wizard_db_name_desc="Wprowadź nazwę bazy danych WordPress."
wizard_db_name_label="Nazwa bazy danych"
wizard_m10_desc="Wprowadź poświadczenia administratora MariaDB 10, aby kontynuować konfigurację bazy danych WordPress."
wizard_admin_acc="Konto"
wizard_admin_pass="Hasło"
wizard_set_db_desc="Utwórz nowe odrębne konto bazy danych dla WordPress, aby użyć istniejących/nowych danych."
wizard_set_data_title="Konfiguruj WordPress"
wizard_found_backup="Wybierz metodę importu danych."
wizard_decide_restore="WordPress — baza danych już istnieje.
Wybierz dowolną z następujących akcji:"
wizard_restore="Użyj istniejących danych"
wizard_create_new="Czysta instalacja (wszystkie istniejące dane, w tym pliki konfiguracyjne i baza danych, zostaną usunięte)."
wizard_db_user_account_desc="Konto użytkownika bazy danych"
wizard_db_user_password_desc="Hasło użytkownika bazy danych"
wizard_migrate_note="Najnowsza wersja WordPress obsługuje tylko aplikację MariaDB 10.
System wykrył jedynie istniejąca bazę danych MariaDB 5.
W kolejnym kroku nastąpi migracja bazy danych z MariaDB 5 do MariaDB 10.
Wprowadź poświadczenia administratora MariaDB 5, aby kontynuować instalację."
wizard_migrate_title="Migruj bazę danych WordPress"
wizard_remove_msql_title="Usuń bazę danych WordPress"
wizard_remove_msql_desc="Po usunięciu bazy danych WordPress wszystkie dane zostaną usunięte."
wizard_msql_password_desc_remove="Wprowadź poświadczenia administratora bazy danych, aby usunąć bazę danych WordPress."
wizard_admin_acc="Konto"
wizard_admin_pass="Hasło"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_default.sh 0000755 0000041 0000041 00000047274 13571663560 020366 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Set up WordPress Database"
wizard_db_name_desc="Please enter the database name for WordPress."
wizard_db_name_label="Database name"
wizard_m10_desc="Please enter the administrator credentials of MariaDB 10 to proceed with WordPress database settings."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Please create a new exclusive database account for WordPress to use existing/new data."
wizard_set_data_title="Set up WordPress"
wizard_found_backup="Please select a method to import data."
wizard_decide_restore="WordPress database already exists.
Please select either of the following actions:"
wizard_restore="Use existing data"
wizard_create_new="Clean install (All existing data, including configuration files and the database, will be removed.)"
wizard_db_user_account_desc="Database user account"
wizard_db_user_password_desc="Database user password"
wizard_migrate_note="The latest version of WordPress only supports MariaDB 10.
The system has detected an existing MariaDB 5 database.
In the next step, your database will be migrated from MariaDB 5 to MariaDB 10.
Please enter the administrator credentials of MariaDB 5 to proceed with the installation."
wizard_migrate_title="Migrate WordPress Database"
wizard_remove_msql_title="Remove WordPress database"
wizard_remove_msql_desc="If the WordPress database is removed, all the data will be deleted."
wizard_msql_password_desc_remove="Please enter the credentials of the database administrator to remove the WordPress database."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_jpn.sh 0000755 0000041 0000041 00000050217 13571663560 017520 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPressデータベースをセットアップ"
wizard_db_name_desc="WordPress データベースの名前を入力してください。 "
wizard_db_name_label="データベース名"
wizard_m10_desc="MariaDB 10の管理者の資格情報を入力してからWordPressデータベース設定に進んでください。"
wizard_admin_acc="アカウント"
wizard_admin_pass="パスワード"
wizard_set_db_desc="新しい排他的データベースをWordPressに作成してから既存/新規のデータを使用してください。"
wizard_set_data_title="WordPressをセットアップ"
wizard_found_backup="データをインポートする方法を選択してください。"
wizard_decide_restore="WordPress データベースはすでに存在します。
以下のいずれかの操作を選択してください。"
wizard_restore="既存のデータを使用"
wizard_create_new="クリーン インストール (構成ファイルやデータベースなどすべての既存のデータが削除されます。)"
wizard_db_user_account_desc="データベースのユーザー アカウント"
wizard_db_user_password_desc="データベース ユーザー パスワード"
wizard_migrate_note="WordPressの最新バージョンはMariaDB 10のみをサポートします。
システムが既存のMariaDB 5データベースを検出しました。
次のステップで、データベースはMariaDB 5からMariaDB 10に移行します。
MariaDB 5のadminの資格情報を入力してからインストールに進んでください。"
wizard_migrate_title="WordPressデータベースを移行"
wizard_remove_msql_title="WordPress データベースを削除"
wizard_remove_msql_desc="WordPress データベースを削除すると、すべてのデータが削除されます。"
wizard_msql_password_desc_remove="WordPress データベースを削除するには、データベースの管理者の認証情報を入力してください。"
wizard_admin_acc="アカウント"
wizard_admin_pass="パスワード"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_jpn.sh 0000755 0000041 0000041 00000030707 13571663560 020065 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPressデータベースをセットアップ"
wizard_db_name_desc="WordPress データベースの名前を入力してください。 "
wizard_db_name_label="データベース名"
wizard_m10_desc="MariaDB 10の管理者の資格情報を入力してからWordPressデータベース設定に進んでください。"
wizard_admin_acc="アカウント"
wizard_admin_pass="パスワード"
wizard_set_db_desc="新しい排他的データベースをWordPressに作成してから既存/新規のデータを使用してください。"
wizard_set_data_title="WordPressをセットアップ"
wizard_found_backup="データをインポートする方法を選択してください。"
wizard_decide_restore="WordPress データベースはすでに存在します。
以下のいずれかの操作を選択してください。"
wizard_restore="既存のデータを使用"
wizard_create_new="クリーン インストール (構成ファイルやデータベースなどすべての既存のデータが削除されます。)"
wizard_db_user_account_desc="データベースのユーザー アカウント"
wizard_db_user_password_desc="データベース ユーザー パスワード"
wizard_migrate_note="WordPressの最新バージョンはMariaDB 10のみをサポートします。
システムが既存のMariaDB 5データベースを検出しました。
次のステップで、データベースはMariaDB 5からMariaDB 10に移行します。
MariaDB 5のadminの資格情報を入力してからインストールに進んでください。"
wizard_migrate_title="WordPressデータベースを移行"
wizard_remove_msql_title="WordPress データベースを削除"
wizard_remove_msql_desc="WordPress データベースを削除すると、すべてのデータが削除されます。"
wizard_msql_password_desc_remove="WordPress データベースを削除するには、データベースの管理者の認証情報を入力してください。"
wizard_admin_acc="アカウント"
wizard_admin_pass="パスワード"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_enu.sh 0000755 0000041 0000041 00000045543 13571663560 017507 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Set up WordPress Database"
wizard_db_name_desc="Please enter the database name for WordPress."
wizard_db_name_label="Database name"
wizard_m10_desc="Please enter the administrator credentials of MariaDB 10 to proceed with WordPress database settings."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Please create a new exclusive database account for WordPress to use existing/new data."
wizard_set_data_title="Set up WordPress"
wizard_found_backup="Please select a method to import data."
wizard_decide_restore="WordPress database already exists.
Please select either of the following actions:"
wizard_restore="Use existing data"
wizard_create_new="Clean install (All existing data, including configuration files and the database, will be removed.)"
wizard_db_user_account_desc="Database user account"
wizard_db_user_password_desc="Database user password"
wizard_migrate_note="The latest version of WordPress only supports MariaDB 10.
The system has detected an existing MariaDB 5 database.
In the next step, your database will be migrated from MariaDB 5 to MariaDB 10.
Please enter the administrator credentials of MariaDB 5 to proceed with the installation."
wizard_migrate_title="Migrate WordPress Database"
wizard_remove_msql_title="Remove WordPress database"
wizard_remove_msql_desc="If the WordPress database is removed, all the data will be deleted."
wizard_msql_password_desc_remove="Please enter the credentials of the database administrator to remove the WordPress database."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_sve.sh 0000755 0000041 0000041 00000047454 13571663560 017537 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Konfigurera databasen WordPress"
wizard_db_name_desc="Ange databasnamnet för WordPress databas. "
wizard_db_name_label="Databasnamn"
wizard_m10_desc="Vänligen ange administratörens autentiseringsuppgifter för MariaDB 10 för att fortsätta med databasinställningar för WordPress."
wizard_admin_acc="Konto"
wizard_admin_pass="Lösenord"
wizard_set_db_desc="Vänligen skapa ett nytt exklusivt databaskonto för WordPress för att använda befintliga/nya data."
wizard_set_data_title="Konfigurera WordPress"
wizard_found_backup="Vänligen välj en metod för att importera data."
wizard_decide_restore="Databasen WordPress finns redan.
Vänligen markera någon av följande åtgärder:"
wizard_restore="Använd befintliga data"
wizard_create_new="Ren installation (alla befintliga data, inklusive konfigurationsfiler och databasen tas bort)."
wizard_db_user_account_desc="Användarkonto för databas"
wizard_db_user_password_desc="Lösenord för databasanvändare"
wizard_migrate_note="Den senaste versionen av WordPress har bara stöd för MariaDB 10.
Systemet har upptäckt en befintlig MariaDB 5-databas.
I nästa steg blir din databas migrerad från MariaDB 5 till MariaDB 10.
Vänligen ange autentiseringsuppgifter för administratören för MariaDB 5 för att fortsätta med installationen."
wizard_migrate_title="Migrera databasen WordPress"
wizard_remove_msql_title="Ta bort WordPress-databas"
wizard_remove_msql_desc="Om databasen WordPress tas bort raderas alla data."
wizard_msql_password_desc_remove="Vänligen ange autentiseringsuppgifter för databasadministratören för att ta bort databasen för WordPress."
wizard_admin_acc="Konto"
wizard_admin_pass="Lösenord"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_cht.sh 0000755 0000041 0000041 00000045316 13571663560 017474 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="設定 WordPress 資料庫"
wizard_db_name_desc="請輸入 WordPress 資料庫名稱。"
wizard_db_name_label="資料庫名稱"
wizard_m10_desc="請輸入 MariaDB 10 管理者的帳號密碼,以進行 WordPress 資料庫設定。"
wizard_admin_acc="帳號"
wizard_admin_pass="密碼"
wizard_set_db_desc="請為 WordPress 建立資料庫專屬帳號,以使用原有/全新資料。"
wizard_set_data_title="設定 WordPress"
wizard_found_backup="請選擇資料匯入方式。"
wizard_decide_restore="WordPress 資料庫已存在。
請選擇下方任一動作:"
wizard_restore="使用原有資料"
wizard_create_new="全新安裝 (包含設定檔及資料庫的原有資料將全部被移除。)"
wizard_db_user_account_desc="資料庫使用者帳號"
wizard_db_user_password_desc="資料庫使用者密碼"
wizard_migrate_note="最新版本的 WordPress 僅支援 MariaDB 10。
系統已偵測到 MariaDB 5 的資料庫,在下個步驟中,系統會將 MariaDB 5 資料庫轉移至 MariaDB 10。
請輸入 MariaDB 5 管理者的帳號密碼,以進行安裝。"
wizard_migrate_title="轉移 WordPress 資料庫"
wizard_remove_msql_title="移除 WordPress 資料庫"
wizard_remove_msql_desc="若移除 WordPress 資料庫,全部資料將被刪除。"
wizard_msql_password_desc_remove="請輸入資料庫管理者的帳號密碼來移除 WordPress 資料庫。"
wizard_admin_acc="帳號"
wizard_admin_pass="密碼"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_cht.sh 0000755 0000041 0000041 00000047047 13571663560 017516 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="設定 WordPress 資料庫"
wizard_db_name_desc="請輸入 WordPress 資料庫名稱。"
wizard_db_name_label="資料庫名稱"
wizard_m10_desc="請輸入 MariaDB 10 管理者的帳號密碼,以進行 WordPress 資料庫設定。"
wizard_admin_acc="帳號"
wizard_admin_pass="密碼"
wizard_set_db_desc="請為 WordPress 建立資料庫專屬帳號,以使用原有/全新資料。"
wizard_set_data_title="設定 WordPress"
wizard_found_backup="請選擇資料匯入方式。"
wizard_decide_restore="WordPress 資料庫已存在。
請選擇下方任一動作:"
wizard_restore="使用原有資料"
wizard_create_new="全新安裝 (包含設定檔及資料庫的原有資料將全部被移除。)"
wizard_db_user_account_desc="資料庫使用者帳號"
wizard_db_user_password_desc="資料庫使用者密碼"
wizard_migrate_note="最新版本的 WordPress 僅支援 MariaDB 10。
系統已偵測到 MariaDB 5 的資料庫,在下個步驟中,系統會將 MariaDB 5 資料庫轉移至 MariaDB 10。
請輸入 MariaDB 5 管理者的帳號密碼,以進行安裝。"
wizard_migrate_title="轉移 WordPress 資料庫"
wizard_remove_msql_title="移除 WordPress 資料庫"
wizard_remove_msql_desc="若移除 WordPress 資料庫,全部資料將被刪除。"
wizard_msql_password_desc_remove="請輸入資料庫管理者的帳號密碼來移除 WordPress 資料庫。"
wizard_admin_acc="帳號"
wizard_admin_pass="密碼"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_ptb.sh 0000755 0000041 0000041 00000046010 13571663560 017473 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurar banco de dados do WordPress"
wizard_db_name_desc="Digite o nome do banco de dados do WordPress."
wizard_db_name_label="Nome do banco de dados"
wizard_m10_desc="Insira as credenciais de administrador do MariaDB 10 para prosseguir com as configurações do banco de dados do WordPress."
wizard_admin_acc="Conta"
wizard_admin_pass="Senha"
wizard_set_db_desc="Crie uma conta nova e exclusiva de banco de dados para o WordPress usar dados existentes/novos."
wizard_set_data_title="Configurar WordPress"
wizard_found_backup="Selecione um método parar importar os dados."
wizard_decide_restore="WordPress o bando de dados já existe.
Selecione uma das seguintes ações:"
wizard_restore="Usar dados existentes"
wizard_create_new="Limpar instalação (todos os dados existentes, incluindo arquivos de configuração e o banco de dados, serão removidos.)"
wizard_db_user_account_desc="Conta de usuário de banco de dados"
wizard_db_user_password_desc="Senha do usuário de banco de dados"
wizard_migrate_note="A versão mais recente do WordPress só oferece suporte ao MariaDB 10.
O sistema detectou um banco de dados já existente do MariaDB 5.
Na próxima etapa, o banco de dados será migrado do MariaDB 5 para o MariaDB 10.
Insira as credenciais de administrador do MariaDB 5 para prosseguir com a instalação."
wizard_migrate_title="Migrar banco de dados do WordPress"
wizard_remove_msql_title="Remover banco de dados do WordPress"
wizard_remove_msql_desc="Se o banco de dados do WordPress for removido, todos os dados serão excluídos."
wizard_msql_password_desc_remove="Digite as credenciais do administrador de banco de dados para remover o banco de dados do WordPress."
wizard_admin_acc="Conta"
wizard_admin_pass="Senha"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/wizard_customized 0000644 0000041 0000041 00000003647 13571662730 017003 0 ustar www-data www-data #!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WIZARD_UIFILES/install_uifile_nor.sh 0000755 0000041 0000041 00000047305 13571663560 017533 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Sett opp WordPress-database"
wizard_db_name_desc="Du må skrive inn databasenavnet for WordPress-databasen. "
wizard_db_name_label="Databasenavn"
wizard_m10_desc="Angi administratorens brukerinformasjon for MariaDB 10 for å fortsette med WordPress-databaseinnstillingen."
wizard_admin_acc="Konto"
wizard_admin_pass="Passord"
wizard_set_db_desc="Opprett en ny eksklusiv databasekonto for WordPress for å bruke eksisterende/nye data."
wizard_set_data_title="Sett opp WordPress"
wizard_found_backup="Velg en metode for å importere data."
wizard_decide_restore="WordPress-databasen eksisterer allerede.
Velg en av følgende handlinger:"
wizard_restore="Bruk eksisterende data"
wizard_create_new="Ren installasjon (alle eksisterende data, inkludert konfigurasjonsfiler og databasen, blir fjernet.)"
wizard_db_user_account_desc="Brukerkonto for database"
wizard_db_user_password_desc="Passord for databasebruker"
wizard_migrate_note="Den nyeste versjonen av WordPress støtter kun MariaDB 10.
Systemet har oppdaget en eksisterende MariaDB 5-database.
I det neste trinnet blir databasen overført fra MariaDB 5 til MariaDB 10.
Angi administratorens brukerinformasjon for MariaDB 5 for å fortsette installasjonen."
wizard_migrate_title="Overfør WordPress-database"
wizard_remove_msql_title="Fjern WordPress-database"
wizard_remove_msql_desc="Hvis du fjerner WordPress-databasen, vil alle data bli slettet."
wizard_msql_password_desc_remove="Angi brukerinformasjonen til databaseadministratoren for å fjerne WordPress-databasen."
wizard_admin_acc="Konto"
wizard_admin_pass="Passord"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_enu.sh 0000755 0000041 0000041 00000027764 13571663560 020076 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Set up WordPress Database"
wizard_db_name_desc="Please enter the database name for WordPress."
wizard_db_name_label="Database name"
wizard_m10_desc="Please enter the administrator credentials of MariaDB 10 to proceed with WordPress database settings."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Please create a new exclusive database account for WordPress to use existing/new data."
wizard_set_data_title="Set up WordPress"
wizard_found_backup="Please select a method to import data."
wizard_decide_restore="WordPress database already exists.
Please select either of the following actions:"
wizard_restore="Use existing data"
wizard_create_new="Clean install (All existing data, including configuration files and the database, will be removed.)"
wizard_db_user_account_desc="Database user account"
wizard_db_user_password_desc="Database user password"
wizard_migrate_note="The latest version of WordPress only supports MariaDB 10.
The system has detected an existing MariaDB 5 database.
In the next step, your database will be migrated from MariaDB 5 to MariaDB 10.
Please enter the administrator credentials of MariaDB 5 to proceed with the installation."
wizard_migrate_title="Migrate WordPress Database"
wizard_remove_msql_title="Remove WordPress database"
wizard_remove_msql_desc="If the WordPress database is removed, all the data will be deleted."
wizard_msql_password_desc_remove="Please enter the credentials of the database administrator to remove the WordPress database."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_fre.sh 0000755 0000041 0000041 00000046307 13571663560 017473 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurer la base de données WordPress"
wizard_db_name_desc="Veuillez entrer le nom de la base de données WordPress."
wizard_db_name_label="Nom de base de données"
wizard_m10_desc="Saisissez les identifiants de l'administrateur de MariaDB 10 pour passer à la configuration des paramètres de la base de données WordPress."
wizard_admin_acc="Compte"
wizard_admin_pass="Mot de passe"
wizard_set_db_desc="Créez un nouveau compte exclusif de base de données pour WordPress pour utiliser des données existantes ou de nouvelles données."
wizard_set_data_title="Configurer WordPress"
wizard_found_backup="Sélectionnez une méthode d'importation des données."
wizard_decide_restore="La base de données WordPress existe déjà.
Sélectionnez l'une des actions suivantes :"
wizard_restore="Utiliser les données existantes"
wizard_create_new="Nettoyer l'installation (Toutes les données existantes, notamment les fichiers de configuration et la base de données, seront supprimés.)"
wizard_db_user_account_desc="Compte de l'utilisateur de la base de données"
wizard_db_user_password_desc="Mot de passe de l'utilisateur de la base de données"
wizard_migrate_note="La dernière version de WordPress ne prend en charge que MariaDB 10.
Le système a détecté une base de données MariaDB 5.
À l'étape suivante, votre base de données sera migrée de MariaDB 5 vers MariaDB 10.
Saisissez les identifiants de l'administrateur de MariaDB 5 pour passer à l'installation."
wizard_migrate_title="Migrer la base de données WordPress"
wizard_remove_msql_title="Supprimer la base de données WordPress"
wizard_remove_msql_desc="Si la base de données WordPress est supprimée, toutes les données seront supprimées."
wizard_msql_password_desc_remove="Saisissez les identifiants de l'administrateur de la base de données pour supprimer la base de données WordPress."
wizard_admin_acc="Compte"
wizard_admin_pass="Mot de passe"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/uninstall_uifile_fre.sh 0000755 0000041 0000041 00000030530 13571663560 020044 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurer la base de données WordPress"
wizard_db_name_desc="Veuillez entrer le nom de la base de données WordPress."
wizard_db_name_label="Nom de base de données"
wizard_m10_desc="Saisissez les identifiants de l'administrateur de MariaDB 10 pour passer à la configuration des paramètres de la base de données WordPress."
wizard_admin_acc="Compte"
wizard_admin_pass="Mot de passe"
wizard_set_db_desc="Créez un nouveau compte exclusif de base de données pour WordPress pour utiliser des données existantes ou de nouvelles données."
wizard_set_data_title="Configurer WordPress"
wizard_found_backup="Sélectionnez une méthode d'importation des données."
wizard_decide_restore="La base de données WordPress existe déjà.
Sélectionnez l'une des actions suivantes :"
wizard_restore="Utiliser les données existantes"
wizard_create_new="Nettoyer l'installation (Toutes les données existantes, notamment les fichiers de configuration et la base de données, seront supprimés.)"
wizard_db_user_account_desc="Compte de l'utilisateur de la base de données"
wizard_db_user_password_desc="Mot de passe de l'utilisateur de la base de données"
wizard_migrate_note="La dernière version de WordPress ne prend en charge que MariaDB 10.
Le système a détecté une base de données MariaDB 5.
À l'étape suivante, votre base de données sera migrée de MariaDB 5 vers MariaDB 10.
Saisissez les identifiants de l'administrateur de MariaDB 5 pour passer à l'installation."
wizard_migrate_title="Migrer la base de données WordPress"
wizard_remove_msql_title="Supprimer la base de données WordPress"
wizard_remove_msql_desc="Si la base de données WordPress est supprimée, toutes les données seront supprimées."
wizard_msql_password_desc_remove="Saisissez les identifiants de l'administrateur de la base de données pour supprimer la base de données WordPress."
wizard_admin_acc="Compte"
wizard_admin_pass="Mot de passe"
PageUninst()
{
cat << EOF
{
"step_title": "$wizard_remove_msql_title",
"items": [{
"type": "multiselect",
"desc": "$wizard_remove_msql_desc",
"subitems": [{
"key": "pkgwizard_remove_mysql",
"desc": "$wizard_remove_msql_title"
}]
}, {
"type": "textfield",
"desc": "$wizard_msql_password_desc_remove",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root"
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local uninst_page="$(PageUninst)"
echo "[$uninst_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_tha.sh 0000755 0000041 0000041 00000045543 13571663560 017474 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Set up WordPress Database"
wizard_db_name_desc="Please enter the database name for WordPress."
wizard_db_name_label="Database name"
wizard_m10_desc="Please enter the administrator credentials of MariaDB 10 to proceed with WordPress database settings."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
wizard_set_db_desc="Please create a new exclusive database account for WordPress to use existing/new data."
wizard_set_data_title="Set up WordPress"
wizard_found_backup="Please select a method to import data."
wizard_decide_restore="WordPress database already exists.
Please select either of the following actions:"
wizard_restore="Use existing data"
wizard_create_new="Clean install (All existing data, including configuration files and the database, will be removed.)"
wizard_db_user_account_desc="Database user account"
wizard_db_user_password_desc="Database user password"
wizard_migrate_note="The latest version of WordPress only supports MariaDB 10.
The system has detected an existing MariaDB 5 database.
In the next step, your database will be migrated from MariaDB 5 to MariaDB 10.
Please enter the administrator credentials of MariaDB 5 to proceed with the installation."
wizard_migrate_title="Migrate WordPress Database"
wizard_remove_msql_title="Remove WordPress database"
wizard_remove_msql_desc="If the WordPress database is removed, all the data will be deleted."
wizard_msql_password_desc_remove="Please enter the credentials of the database administrator to remove the WordPress database."
wizard_admin_acc="Account"
wizard_admin_pass="Password"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_spn.sh 0000755 0000041 0000041 00000047624 13571663560 017541 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Configurar la base de datos de WordPress"
wizard_db_name_desc="Introduzca el nombre de la base de datos de WordPress."
wizard_db_name_label="Nombre de base de datos"
wizard_m10_desc="Introduzca las credenciales de administrador de MariaDB 10 para continuar con la configuración de la base de datos de WordPress."
wizard_admin_acc="Cuenta"
wizard_admin_pass="Contraseña"
wizard_set_db_desc="Cree una nueva cuenta de base de datos exclusiva para que WordPress use los datos nuevos/existentes."
wizard_set_data_title="Configurar WordPress"
wizard_found_backup="Seleccione un método para importar datos."
wizard_decide_restore="WordPress la base de datos ya existe.
Seleccione alguna de las siguientes acciones:"
wizard_restore="Utilizar los datos existentes"
wizard_create_new="Instalación limpia (se eliminarán todos los datos existentes, incluidos los archivos de configuración y la base de datos)."
wizard_db_user_account_desc="Cuenta de usuario de base de datos"
wizard_db_user_password_desc="Contraseña de usuario de base de datos"
wizard_migrate_note="La última versión de WordPress solo es compatible con MariaDB 10.
El sistema ha detectado una base de datos MariaDB 5 existente.
En el próximo paso, se migrará su base de datos de MariaDB 5 a MariaDB 10.
Introduzca las credenciales de administrador de MariaDB 5 para continuar con la instalación."
wizard_migrate_title="Migrar base de datos de WordPress"
wizard_remove_msql_title="Eliminar base de datos de WordPress"
wizard_remove_msql_desc="Si se elimina la base de datos de WordPress, se eliminarán todos los datos."
wizard_msql_password_desc_remove="Introduzca las credenciales de administrador de base de datos para eliminar la base de datos de WordPress"
wizard_admin_acc="Cuenta"
wizard_admin_pass="Contraseña"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/install_uifile_trk.sh 0000755 0000041 0000041 00000047372 13571663560 017541 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress Veritabanını Kur"
wizard_db_name_desc="Lütfen WordPress veritabanı için veritabanı adını girin. "
wizard_db_name_label="Veritabanı adı"
wizard_m10_desc="Lütfen MariaDB 10'un yönetici bilgilerini girerek WordPress veritabanı ayarlarına geçin."
wizard_admin_acc="Hesap"
wizard_admin_pass="Parola"
wizard_set_db_desc="Mevcut/yeni verileri kullanmak üzere WordPress için yeni bir özel veritabanı hesabı oluşturun."
wizard_set_data_title="WordPress kur"
wizard_found_backup="Lütfen verileri içeri aktarmak için bir yöntem seçin."
wizard_decide_restore="WordPress veritabanı zaten mevcut.
Lütfen aşağıdaki eylemlerden birisini seçin:"
wizard_restore="Mevcut verileri kullan"
wizard_create_new="Kurulumu kaldır (Tüm mevcut veriler, yapılandırma dosyaları ve veritabanı dahil, kaldırılacaktır.)"
wizard_db_user_account_desc="Veritabanı kullanıcı hesabı"
wizard_db_user_password_desc="Veritabanı kullanıcı parolası"
wizard_migrate_note="WordPress son sürümü sadece MariaDB 10 destekler.
Sistem mevcut bir MariaDB 5 veritabanını algıladı.
Sonraki adımda, veritabanınız MariaDB 5'den MariaDB 10'a taşınacaktır.
Lütfen kuruluma geçmek için MariaDB 5 yönetici bilgilerini girin."
wizard_migrate_title="WordPress Veritabanını Taşı"
wizard_remove_msql_title="WordPress veritabanını kaldır"
wizard_remove_msql_desc="WordPress veritabanı kaldırılırsa, tüm veriler silinecektir."
wizard_msql_password_desc_remove="WordPress veritabanını kaldırmak için lütfen veritabanı yöneticisinin bilgilerini girin."
wizard_admin_acc="Hesap"
wizard_admin_pass="Parola"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageRestore()
{
cat << EOF
{
"step_title": "$wizard_found_backup",
"items": [{
"type": "singleselect",
"desc": "$wizard_decide_restore",
"subitems": [{
"key": "restore_backup",
"desc": "$wizard_restore",
"defaultValue": true
}, {
"desc": "$wizard_create_new",
"defaultValue": false
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local install_page=""
CustomSetPages # set: MIGRATE_PAGES RESTORE_PAGES NEW_INSTALL_PAGES
CustomSetBackupPath # set BACKUP_PATH
CustomMainInstall
DEFAULT_RESTORE=false
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$BACKUP_PATH")
DB_USER=$(CustomGetDBUser "$BACKUP_PATH")
if CustomHasRunWebsiteSetup "$BACKUP_PATH"; then
local version="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
install_page="$MIGRATE_PAGES"
else
install_page="$RESTORE_PAGES"
fi
else
install_page="$NEW_INSTALL_PAGES"
fi
echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_csy.sh 0000755 0000041 0000041 00000045714 13571663560 017516 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Nastavit databázi WordPress"
wizard_db_name_desc="Zadejte název databáze WordPress. "
wizard_db_name_label="Název databáze"
wizard_m10_desc="Chcete-li pokračovat v nastavení databáze WordPress, zadejte přihlašovací údaje správce pro databázi MariaDB 10."
wizard_admin_acc="Účet"
wizard_admin_pass="Heslo"
wizard_set_db_desc="Chcete-li použít stávající nebo nová data, vytvořte nový vyhrazený účet databáze pro aplikaci WordPress."
wizard_set_data_title="Nastavit WordPress"
wizard_found_backup="Vyberte způsob importu dat."
wizard_decide_restore="WordPress databáze již existuje.
Vyberte některou z následujících akcí:"
wizard_restore="Použít stávající data"
wizard_create_new="Čistá instalace (Odstraní se všechna stávající data včetně konfiguračních souborů a databáze.)"
wizard_db_user_account_desc="Účet uživatele databáze"
wizard_db_user_password_desc="Heslo uživatele databáze"
wizard_migrate_note="Nejnovější verze aplikace WordPress podporuje pouze databázi MariaDB 10.
Systém nalezl stávající databázi MariaDB 5.
V následujícím kroku bude vaše databáze migrována z verze MariaDB 5 do verze MariaDB 10.
Chcete-li pokračovat v instalaci, zadejte přihlašovací údaje správce pro databázi MariaDB 5."
wizard_migrate_title="Migrace databáze WordPress"
wizard_remove_msql_title="Odebrat databázi WordPress"
wizard_remove_msql_desc="Pokud odeberete databázi WordPress, odstraní se veškerá data."
wizard_msql_password_desc_remove="Databázi WordPress bude možné odebrat po zadání přihlašovacích údajů správce databáze."
wizard_admin_acc="Účet"
wizard_admin_pass="Heslo"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_ger.sh 0000755 0000041 0000041 00000046050 13571663560 017467 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="WordPress-Datenbank einrichten"
wizard_db_name_desc="Bitte geben Sie den Datenbanknamen für die WordPress Datenbank ein."
wizard_db_name_label="Datenbankname"
wizard_m10_desc="Bitte geben Sie die Administrator-Zugriffsdaten für MariaDB 10 ein, um mit den WordPress-Datenbankeinstellungen fortzufahren."
wizard_admin_acc="Konto"
wizard_admin_pass="Passwort"
wizard_set_db_desc="Bitte erstellen Sie ein neues exklusives Datenbankkonto für WordPress, um vorhandene/neue Daten zu verwenden."
wizard_set_data_title="WordPress einrichten"
wizard_found_backup="Bitte wählen Sie eine Methode, um Daten zu importieren."
wizard_decide_restore="WordPress-Datenbank ist bereits vorhanden.
Bitte wählen Sie eine der folgenden Aktionen aus:"
wizard_restore="Vorhandene Daten verwenden"
wizard_create_new="Installation reinigen (sämtliche vorhandenen Daten, einschließlich Konfigurationsdateien und die Datenbank, werden entfernt.)"
wizard_db_user_account_desc="Datenbank-Benutzerkonto"
wizard_db_user_password_desc="Datenbankbenutzer-Kennwort"
wizard_migrate_note="Die neueste Version von WordPress unterstützt nur MariaDB 10.
Das System hat eine vorhandene MariaDB 5-Datenbank erkannt.
Im nächsten Schritt wird Ihre Datenbank von MariaDB 5 zu MariaDB 10 migriert.
Bitte geben Sie die admin-Zugriffsdaten von MariaDB 5 ein, um die Installation fortzusetzen."
wizard_migrate_title="WordPress-Datenbank migrieren"
wizard_remove_msql_title="WordPress Datenbank entfernen"
wizard_remove_msql_desc="Wenn die WordPress-Datenbank entfernt wird, werden sämtliche Daten gelöscht."
wizard_msql_password_desc_remove="Geben Sie die Anmeldeinformationen des Datenbank-Administrators ein, um die WordPress-Datenbank zu entfernen."
wizard_admin_acc="Konto"
wizard_admin_pass="Passwort"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
WIZARD_UIFILES/upgrade_uifile_sve.sh 0000755 0000041 0000041 00000045723 13571663560 017515 0 ustar www-data www-data #!/bin/bash
# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_DB="page_db"
PAGE_UNINST="page_uninst"
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwrited
INIT_DB_USER="" # need to be overwrited
INFO_FILE="" # need to be overwrited
BACKUP_PATH="" # need to be overwrited
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGE_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB $MAIN_INSTALL"
PAGE_UPGRADE="$PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $MAIN_UPGRADE"
PAGE_UNINST="$PAGE_UNINST $MAIN_UNINST"
MIGRATE_DB_VERSION="-1"
MainCreate()
{
local output="$1"
local pages="$2"
local main_function="$3"
local lan
for dir in lang/*; do
lan=$(basename "$dir")
cat "wizard_common" "wizard_customized" > "${output}_${lan}.sh"
CustomWizCreate "${output}_${lan}.sh"
cat "lang/$lan" $pages "$main_function" >> "${output}_${lan}.sh"
done
chmod +x "${output}"*.sh
cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}
NeedMigrateDB()
{
local version="$1"
if [ -z "$version" ] || [ "$version" -le "$MIGRATE_DB_VERSION" ]; then
return 0
fi
return 1
}
CustomHasRunWebsiteSetup()
{
local path="$1"
[ -s "$path/$CONF_FILE" ]
}
CustomWizCreate()
{
:
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPkgPath)"
}
CustomMainInstall()
{
:
}
CustomGetValueFromMetaFile()
{
local key="$1"
local backup_info="/var/packages/.$PKG_DIR.conf"
local syno_conf="/var/packages/$PKG_NAME/synology.conf"
local record_file=""
if [ -s "$INFO_FILE" ]; then
record_file="$INFO_FILE"
elif [ -s "$backup_info" ]; then
record_file="$backup_info"
elif [ -s "$syno_conf" ]; then
record_file="$syno_conf"
fi
get_key_value "$record_file" "$key"
}
CustomGetBackupPrefix()
{
local backup_prefix="/$(readlink /var/services/web | cut -d/ -f2)/@appstore/.$PKG_DIR"
echo "$backup_prefix"
}
CustomGetBackupPkgPath()
{
local backup_pkg_path="$(CustomGetBackupPrefix)/$PKG_DIR"
echo "$backup_pkg_path"
}
# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
}
CustomParseDBConf()
{
:
}
CustomGetDBName()
{
:
}
CustomGetDBUser()
{
:
}
CustomGetDBPass()
{
:
}
CustomPageActivate()
{
:
}
#!/bin/bash
PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web/$PKG_DIR"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
CONFIG_SAMPLE="wp-config-sample-0121.php"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CustomWizCreate()
{
local output="$1"
echo "WP_CONF_FILE='" >> "${output}"
cat "$CONFIG_SAMPLE" | openssl enc -A -base64 >> "${output}"
echo "'" >> "${output}"
}
CustomSetBackupPath()
{
BACKUP_PATH="$(CustomGetBackupPrefix)"
}
CustomMainInstall()
{
if [ -d "$BACKUP_PATH" ]; then
GEN_WP_CONF "$BACKUP_PATH"
fi
}
GEN_WP_CONF()
{
local path="$1"
# before 0122, no version value record
local version=$(get_key_value "$INFO_FILE" "version")
if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
# We need to add back the wp-config.php
echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
fi
}
CustomParseDBConf()
{
local path="$1"
local db_info="$2"
local grep_info="$3"
local info_output=""
if [ -s "$path/$CONF_FILE" ]; then
info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
fi
if [ -z "$info_output" ];then
info_output="$(CustomGetValueFromMetaFile "$db_info")"
fi
echo "$info_output"
}
CustomGetDBName()
{
local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
if [ -z "$db_name" ]; then
db_name="$pkgwizard_db_name"
fi
echo "$db_name"
}
CustomGetDBUser()
{
local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
if [ -z "$db_user" ]; then
db_user="$pkgwizard_db_user_account"
fi
echo "$db_user"
}
CustomGetDBPass()
{
CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}
UnQuotePHP()
{
sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
WP_CONF_FILE='
PD9waHAKLyoqCiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFdvcmRQcmVzcwogKgogKiBUaGUgd3AtY29uZmlnLnBocCBjcmVhdGlvbiBzY3JpcHQgdXNlcyB0aGlzIGZpbGUgZHVyaW5nIHRoZQogKiBpbnN0YWxsYXRpb24uIFlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGUgd2ViIHNpdGUsIHlvdSBjYW4KICogY29weSB0aGlzIGZpbGUgdG8gIndwLWNvbmZpZy5waHAiIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOgogKgogKiAqIE15U1FMIHNldHRpbmdzCiAqICogU2VjcmV0IGtleXMKICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgKICogKiBBQlNQQVRICiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9FZGl0aW5nX3dwLWNvbmZpZy5waHAKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLy8gKiogTXlTUUwgc2V0dGluZ3MgLSBZb3UgY2FuIGdldCB0aGlzIGluZm8gZnJvbSB5b3VyIHdlYiBob3N0ICoqIC8vCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLwpkZWZpbmUoJ0RCX05BTUUnLCAnZGF0YWJhc2VfbmFtZV9oZXJlJyk7CgovKiogTXlTUUwgZGF0YWJhc2UgdXNlcm5hbWUgKi8KZGVmaW5lKCdEQl9VU0VSJywgJ3VzZXJuYW1lX2hlcmUnKTsKCi8qKiBNeVNRTCBkYXRhYmFzZSBwYXNzd29yZCAqLwpkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJ3Bhc3N3b3JkX2hlcmUnKTsKCi8qKiBNeVNRTCBob3N0bmFtZSAqLwpkZWZpbmUoJ0RCX0hPU1QnLCAnbG9jYWxob3N0Oi9ydW4vbXlzcWxkL215c3FsZDEwLnNvY2snKTsKCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovCmRlZmluZSgnREJfQ0hBUlNFVCcsICd1dGY4Jyk7CgovKiogVGhlIERhdGFiYXNlIENvbGxhdGUgdHlwZS4gRG9uJ3QgY2hhbmdlIHRoaXMgaWYgaW4gZG91YnQuICovCmRlZmluZSgnREJfQ09MTEFURScsICcnKTsKCi8qKiNAKwogKiBBdXRoZW50aWNhdGlvbiBVbmlxdWUgS2V5cyBhbmQgU2FsdHMuCiAqCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhCiAqIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcgdGhlIHtAbGluayBodHRwczovL2FwaS53b3JkcHJlc3Mub3JnL3NlY3JldC1rZXkvMS4xL3NhbHQvIFdvcmRQcmVzcy5vcmcgc2VjcmV0LWtleSBzZXJ2aWNlfQogKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSBhdCBhbnkgcG9pbnQgaW4gdGltZSB0byBpbnZhbGlkYXRlIGFsbCBleGlzdGluZyBjb29raWVzLiBUaGlzIHdpbGwgZm9yY2UgYWxsIHVzZXJzIHRvIGhhdmUgdG8gbG9nIGluIGFnYWluLgogKgogKiBAc2luY2UgMi42LjAKICovCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdTRUNVUkVfQVVUSF9LRVknLCAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ0xPR0dFRF9JTl9LRVknLCAgICAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTk9OQ0VfS0VZJywgICAgICAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdBVVRIX1NBTFQnLCAgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwpkZWZpbmUoJ1NFQ1VSRV9BVVRIX1NBTFQnLCAncHV0IHlvdXIgdW5pcXVlIHBocmFzZSBoZXJlJyk7CmRlZmluZSgnTE9HR0VEX0lOX1NBTFQnLCAgICdwdXQgeW91ciB1bmlxdWUgcGhyYXNlIGhlcmUnKTsKZGVmaW5lKCdOT05DRV9TQUxUJywgICAgICAgJ3B1dCB5b3VyIHVuaXF1ZSBwaHJhc2UgaGVyZScpOwoKLyoqI0AtKi8KCi8qKgogKiBXb3JkUHJlc3MgRGF0YWJhc2UgVGFibGUgcHJlZml4LgogKgogKiBZb3UgY2FuIGhhdmUgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBpbiBvbmUgZGF0YWJhc2UgaWYgeW91IGdpdmUgZWFjaAogKiBhIHVuaXF1ZSBwcmVmaXguIE9ubHkgbnVtYmVycywgbGV0dGVycywgYW5kIHVuZGVyc2NvcmVzIHBsZWFzZSEKICovCiR0YWJsZV9wcmVmaXggID0gJ3dwXyc7CgovKioKICogV29yZFByZXNzIExvY2FsaXplZCBMYW5ndWFnZSwgZGVmYXVsdHMgdG8gRW5nbGlzaC4KICoKICogQ2hhbmdlIHRoaXMgdG8gbG9jYWxpemUgV29yZFByZXNzLiBBIGNvcnJlc3BvbmRpbmcgTU8gZmlsZSBmb3IgdGhlIGNob3NlbgogKiBsYW5ndWFnZSBtdXN0IGJlIGluc3RhbGxlZCB0byB3cC1jb250ZW50L2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIGluc3RhbGwKICogZGVfREUubW8gdG8gd3AtY29udGVudC9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZXMgYW5kIHNldCBXUExBTkcgdG8gJ2RlX0RFJyB0byBlbmFibGUgR2VybWFuCiAqIGxhbmd1YWdlIHN1cHBvcnQuCiAqLwpkZWZpbmUoJ1dQTEFORycsICcnKTsKZGVmaW5lKCdXUF9MQU5HX0RJUicsIGRpcm5hbWUoX19GSUxFX18pIC4gJy93cC1jb250ZW50L3BsdWdpbnMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2VzJyk7CgovKioKICogRm9yIGRldmVsb3BlcnM6IFdvcmRQcmVzcyBkZWJ1Z2dpbmcgbW9kZS4KICoKICogQ2hhbmdlIHRoaXMgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2Ygbm90aWNlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCiAqIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcGx1Z2luIGFuZCB0aGVtZSBkZXZlbG9wZXJzIHVzZSBXUF9ERUJVRwogKiBpbiB0aGVpciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCiAqCiAqIEZvciBpbmZvcm1hdGlvbiBvbiBvdGhlciBjb25zdGFudHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nLAogKiB2aXNpdCB0aGUgQ29kZXguCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9EZWJ1Z2dpbmdfaW5fV29yZFByZXNzCiAqLwpkZWZpbmUoJ1dQX0RFQlVHJywgZmFsc2UpOwoKLyogVGhhdCdzIGFsbCwgc3RvcCBlZGl0aW5nISBIYXBweSBibG9nZ2luZy4gKi8KJHBhZ2VVUkwgPSAnaHR0cCc7CmlmICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSB7JHBhZ2VVUkwgLj0gInMiO30KJHBhZ2VVUkwgLj0gIjovLyI7CmlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiIGFuZCAkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiNDQzIikgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdOwp9IGVsc2UgewoJJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07Cn0KCmlmICgkX1NFUlZFUlsiSE9TVCJdICE9ICIiKSB7CglkZWZpbmUoJ1dQX1NJVEVVUkwnLCAkcGFnZVVSTCk7Cn0gZWxzZSB7CiAgICAgICAgZGVmaW5lKCdXUF9TSVRFVVJMJywgJHBhZ2VVUkwuJy93b3JkcHJlc3MnKTsKfQoKaWYgKCFkZWZpbmVkKCdTWU5PV09SRFBSRVNTJykpCglkZWZpbmUoJ1NZTk9XT1JEUFJFU1MnLCAnU3lub2xvZ3kgSW5jLicpOwoKLyoqIEFic29sdXRlIHBhdGggdG8gdGhlIFdvcmRQcmVzcyBkaXJlY3RvcnkuICovCmlmICggIWRlZmluZWQoJ0FCU1BBVEgnKSApCglkZWZpbmUoJ0FCU1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSAuICcvJyk7CgovKiogU2V0cyB1cCBXb3JkUHJlc3MgdmFycyBhbmQgaW5jbHVkZWQgZmlsZXMuICovCnJlcXVpcmVfb25jZShBQlNQQVRIIC4gJ3dwLXNldHRpbmdzLnBocCcpOwpyZXF1aXJlX29uY2UoQUJTUEFUSCAuICdzeW5vLW1pc2MucGhwJyk7CgpkZWZpbmUoICdBVVRPTUFUSUNfVVBEQVRFUl9ESVNBQkxFRCcsIHRydWUgKTsKYWRkX2ZpbHRlcigncHJlX3NpdGVfdHJhbnNpZW50X3VwZGF0ZV9jb3JlJywnX19yZXR1cm5fbnVsbCcpOwo='
wizard_db_settings="Konfigurera databasen WordPress"
wizard_db_name_desc="Ange databasnamnet för WordPress databas. "
wizard_db_name_label="Databasnamn"
wizard_m10_desc="Vänligen ange administratörens autentiseringsuppgifter för MariaDB 10 för att fortsätta med databasinställningar för WordPress."
wizard_admin_acc="Konto"
wizard_admin_pass="Lösenord"
wizard_set_db_desc="Vänligen skapa ett nytt exklusivt databaskonto för WordPress för att använda befintliga/nya data."
wizard_set_data_title="Konfigurera WordPress"
wizard_found_backup="Vänligen välj en metod för att importera data."
wizard_decide_restore="Databasen WordPress finns redan.
Vänligen markera någon av följande åtgärder:"
wizard_restore="Använd befintliga data"
wizard_create_new="Ren installation (alla befintliga data, inklusive konfigurationsfiler och databasen tas bort)."
wizard_db_user_account_desc="Användarkonto för databas"
wizard_db_user_password_desc="Lösenord för databasanvändare"
wizard_migrate_note="Den senaste versionen av WordPress har bara stöd för MariaDB 10.
Systemet har upptäckt en befintlig MariaDB 5-databas.
I nästa steg blir din databas migrerad från MariaDB 5 till MariaDB 10.
Vänligen ange autentiseringsuppgifter för administratören för MariaDB 5 för att fortsätta med installationen."
wizard_migrate_title="Migrera databasen WordPress"
wizard_remove_msql_title="Ta bort WordPress-databas"
wizard_remove_msql_desc="Om databasen WordPress tas bort raderas alla data."
wizard_msql_password_desc_remove="Vänligen ange autentiseringsuppgifter för databasadministratören för att ta bort databasen för WordPress."
wizard_admin_acc="Konto"
wizard_admin_pass="Lösenord"
PageM5()
{
cat << EOF
{
"step_title": "$wizard_migrate_title",
"items": [{
"type": "textfield",
"desc": "$wizard_migrate_note",
"subitems": [{
"key": "wizard_m5_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m5_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
PageM10()
{
cat << EOF
{
"step_title": "$wizard_set_data_title",
"items": [{
"type": "textfield",
"desc": "$wizard_m10_desc",
"subitems": [{
"key": "wizard_m10_acc",
"desc": "$wizard_admin_acc",
"defaultValue": "root",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "wizard_m10_pass",
"desc": "$wizard_admin_pass"
}]
}]
}
EOF
}
CheckRestore()
{
cat << EOF
// find constructor contains restore page
for (i = arguments[0].ownerCt.items.length-1; i >= 1; i--){
page = arguments[0].ownerCt.items.items[i];
if (page.headline == \"${wizard_found_backup}\"){
// check whether user wants to restore or not
restore = page.items.items[1].checked;
break;
}
}
EOF
}
FindObj()
{
cat << EOF
for (i = 0; i < arguments[0].items.length; i++) {
item = arguments[0].items.items[i]
if (\"${1}\" == item.itemId){
$2 = arguments[0].items.items[i];
break;
}
}
EOF
}
Activate()
{
cat << EOF
"activeate": "{
restore = $DEFAULT_RESTORE; // user restore or not, set by is_restore
// will set restore
$(CheckRestore)
$(CustomPageActivate)
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
db_user_textfield = null;
grant_user_multiselect = null;
mariadb_ver_textfield = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_user_account" "db_user_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
$(FindObj "mariadb_ver" "mariadb_ver_textfield")
old_db = \"@OLD_DB@\";
if (restore) {
db_name = \"@OLD_DB@\";
db_user = \"@OLD_USER@\";
}
else {
db_name = \"$INIT_DB_NAME\";
db_user = \"$INIT_DB_USER\";
}
old_db_textfield.setValue(old_db);
new_db_textfield.setValue(db_name);
new_db_textfield.setDisabled(restore);
db_user_textfield.setValue(db_user);
mariadb_ver_textfield.setValue(\"$MARIADB_VER\");
need_migrate_multiselect.setVisible(false);
create_db_multiselect.setVisible(false);
drop_db_multiselect.setVisible(false);
grant_user_multiselect.setVisible(false);
}
}",
EOF
}
Deactivate()
{
cat << EOF
"deactivate": "{
restore = $DEFAULT_RESTORE;
$(CheckRestore) // if no radio button, will not set restore value
if (arguments[0].headline == \"${wizard_db_settings}\") {
create_db_multiselect = null;
need_migrate_multiselect = null;
create_db_collision_textfield = null;
old_db_textfield= null;
drop_db_multiselect= null;
new_db_textfield = null;
grant_user_multiselect = null;
$(FindObj "create_db_flag" "create_db_multiselect")
$(FindObj "need_migrate" "need_migrate_multiselect")
$(FindObj "create_db_collision" "create_db_collision_textfield")
$(FindObj "old_db_name" "old_db_textfield")
$(FindObj "drop_db_flag" "drop_db_multiselect")
$(FindObj "pkgwizard_db_name" "new_db_textfield")
$(FindObj "grant_user_flag" "grant_user_multiselect")
table = {
\"5to10\": {\"migrate\": true, \"create\": false, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"new5to10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": true, \"create_db_collision\": \"error\"},
\"restore10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": false, \"create_db_collision\": \"skip\"},
\"new10\": {\"migrate\": false, \"create\": true, \"grant_user\": true, \"drop_db\": old_db_textfield.rawValue && (old_db_textfield.rawValue !== new_db_textfield.rawValue)? true : false, \"create_db_collision\": old_db_textfield.rawValue === new_db_textfield.rawValue? \"replace\" : \"error\"}
};
if (restore) {
if ($NEED_MIGRATE) {
state = \"5to10\";
}
else {
state = \"restore10\";
}
}
else {
if ($NEED_MIGRATE) {
state = \"new5to10\";
}
else {
state = \"new10\";
}
}
need_migrate_multiselect.setValue(table[state][\"migrate\"]);
create_db_multiselect.setValue(table[state][\"create\"]);
grant_user_multiselect.setValue(table[state][\"grant_user\"]);
drop_db_multiselect.setValue(table[state][\"drop_db\"]);
create_db_collision_textfield.setValue(table[state][\"create_db_collision\"]);
}
}",
EOF
}
ApplyDBInfo()
{
local page_db="$1"
sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}
PageDB()
{
local page_db=$(cat << EOF
{
"step_title": "$wizard_db_settings",
$(Activate)
$(Deactivate)
"items": [{
"type": "textfield",
"desc": "$wizard_set_db_desc",
"subitems": [{
"key": "pkgwizard_db_name",
"desc": "$wizard_db_name_label",
"disabled": true,
"validator": {
"allowBlank": false
}
}]
}, {
"type": "textfield",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_account",
"desc": "$wizard_db_user_account_desc",
"validator": {
"allowBlank": false
}
}]
}, {
"type": "password",
"subitems": [{
"indent": 1,
"key": "pkgwizard_db_user_password",
"desc": "$wizard_db_user_password_desc"
}]
}, {
"type": "textfield",
"subitems": [{
"key": "create_db_collision",
"desc": "drop or skip",
"defaultValue": "skip",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "need_migrate",
"desc": "migrate or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "create_db_flag",
"desc": "create db or not",
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "old_db_name",
"desc": "old db name",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "drop_db_flag",
"desc": "drop old db or not",
"hidden": true
}]
}, {
"type": "multiselect",
"subitems": [{
"key": "grant_user_flag",
"desc": "must grant user if exist wizard",
"defaultVaule": true,
"hidden": true
}]
}, {
"type": "textfield",
"subitems": [{
"key": "mariadb_ver",
"desc": "mariadb version",
"defaultVaule": "$MARIADB_VER",
"hidden": true
}]
}]
}
EOF
)
ApplyDBInfo "$page_db"
}
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
main()
{
local upgrade_page=""
DEFAULT_RESTORE=true
NEED_MIGRATE=false
MARIADB_VER="m10"
DB_NAME=$(CustomGetDBName "$WEBSITE_ROOT")
DB_USER=$(CustomGetDBUser "$WEBSITE_ROOT")
local version="$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)"
if NeedMigrateDB "$version"; then # check if needing to migrate MariaDB 5
NEED_MIGRATE=true
MARIADB_VER="m5"
upgrade_page="$(PageM5), $(PageM10), $(PageDB)"
fi
echo "[$upgrade_page]" > "${SYNOPKG_TEMP_LOGFILE}"
return 0
}
main "$@"
conf/ 0000755 0000041 0000041 00000000000 13571662730 012045 5 ustar www-data www-data conf/resource 0000644 0000041 0000041 00000002245 13571662730 013622 0 ustar www-data www-data {
"indexdb": {
"app-index" : {
"conf-relpath": "ui/index.conf",
"db-relpath": "indexdb/appindexdb"
}
},
"apache22": {
"sites-enabled": [{
"relpath": "synology_added/wordpress.conf"
}]
},
"sdk-plugin": {
"plugins": [{
"event": "mariadb10_chpw",
"relpath": "synology_added/etc/mariadb_chpw_wordpress"
}]
},
"mariadb10-db": {
"admin-account-m10": "{{wizard_m10_acc}}",
"admin-pw-m10": "{{wizard_m10_pass}}",
"admin-account-m5": "{{wizard_m5_acc}}",
"admin-pw-m5": "{{wizard_m5_pass}}",
"migrate-db": {
"flag": "{{need_migrate}}",
"m5-db-name": "{{old_db_name}}",
"m10-db-name": "{{pkgwizard_db_name}}",
"db-collision": "error"
},
"create-db" : {
"flag": "{{create_db_flag}}",
"db-name": "{{pkgwizard_db_name}}",
"db-collision": "{{create_db_collision}}"
},
"grant-user": {
"flag": "{{grant_user_flag}}",
"db-name": "{{pkgwizard_db_name}}",
"user-name": "{{pkgwizard_db_user_account}}",
"user-pw": "{{pkgwizard_db_user_password}}"
},
"drop-db-inst": {
"flag": "{{drop_db_flag}}",
"ver": "{{mariadb_ver}}",
"db-name": "{{old_db_name}}"
},
"drop-db-uninst": "{{pkgwizard_remove_mysql}}"
}
}
package.tgz 0000644 0000041 0000041 00041042070 13571663573 013257 0 ustar www-data www-data 7zXZ ִF! ۗ] 2Jg ;mC
1R ՊV: o^J%'vùU1^X5#Dd1Ũ-0tL\:ˍ|ZȺ3~xȤyBGQVl$r[ˇ$w^-^f2CHͅvit,n);}9.E mg ?(a4=x.JsZ`>K[9Y_O=pVSouIAQC0j0ac8 顤 ] Q+k\Dhbf>k ft"-0
d3@ \;U\v{{8%PY|8zU(ƼPA~=;Xc#jCr33ٸe*WX$0]?w dH}&Zm9*}Q;z9݈ZprقY4R?}4ԘAV;9
Ӽ<6h~RJɚOQ_Vߧ5_@;-8.3ګb!TLC