1082 Commits

Author SHA1 Message Date
CHIEFSOFT\ameye f9b7fb4fe7 Media finder 2023-08-10 20:05:44 -04:00
CHIEFSOFT\ameye 8ac4497206 url segments 2023-08-10 18:17:09 -04:00
CHIEFSOFT\ameye 107e1e4d1f read file 2023-08-10 17:59:15 -04:00
CHIEFSOFT\ameye fe6af677c4 get medida 2023-08-10 17:32:49 -04:00
CHIEFSOFT\ameye fee62721fe banner added 2023-08-09 20:20:24 -04:00
CHIEFSOFT\ameye 4cb273e8dd count error 2023-08-09 20:14:44 -04:00
CHIEFSOFT\ameye 6bd1a0ee31 missing description 2023-08-09 13:09:13 -04:00
CHIEFSOFT\ameye e8fc16746e my files 2023-08-09 12:35:18 -04:00
CHIEFSOFT\ameye 07bced0cdb My files 2023-08-09 11:58:48 -04:00
CHIEFSOFT\ameye 6aca25b6ef My files 2023-08-09 10:40:32 -04:00
tokslaw7 19ba7b9281 Implemented Facebook login 2023-08-09 02:41:33 +00:00
CHIEFSOFT\ameye 7f333141b2 message missing 2023-08-08 21:10:11 -04:00
CHIEFSOFT\ameye 1cb19e3c15 clean data 2023-08-08 20:49:55 -04:00
CHIEFSOFT\ameye 66d7cffd4d Account uploads 2023-08-08 20:22:16 -04:00
CHIEFSOFT\ameye 7b94804bff profile my files 2023-08-08 18:34:32 -04:00
CHIEFSOFT\ameye 50a1f90591 upload types 2023-08-08 07:52:00 -04:00
CHIEFSOFT\ameye a3d395d3ce banner error 2023-08-07 07:06:47 -04:00
tokslaw7 0d518c15a5 PIN generator 2023-08-06 03:39:33 +00:00
CHIEFSOFT\ameye f9bd12fb7b job action 2023-08-05 17:58:30 -04:00
CHIEFSOFT\ameye 1600ecd35e pass_link 2023-08-05 13:00:54 -04:00
CHIEFSOFT\ameye b6f59e2899 Family waiting 2023-08-05 12:51:34 -04:00
CHIEFSOFT\ameye 4b1efca26d reset emsil 2023-08-05 11:43:07 -04:00
CHIEFSOFT\ameye c05572b658 Profile missing data 2023-08-05 11:09:44 -04:00
CHIEFSOFT\ameye 58a1f34403 final step 2023-08-05 04:58:44 -04:00
CHIEFSOFT\ameye 723245afe1 reset_uid 2023-08-05 04:10:47 -04:00
CHIEFSOFT\ameye 0fbc9ec34a fix bug 2023-08-04 22:17:10 -04:00
CHIEFSOFT\ameye f21022d9e0 reset pin bug 2023-08-04 21:39:31 -04:00
CHIEFSOFT\ameye 8a22474d6b retval 2023-08-04 21:21:03 -04:00
CHIEFSOFT\ameye 0431b83a27 passwoed reset message 2023-08-04 21:04:48 -04:00
CHIEFSOFT\ameye a5e9841738 substr reset pin 2023-08-04 19:38:11 -04:00
CHIEFSOFT\ameye f92a2e5bda Reset pass 2023-08-04 19:15:46 -04:00
CHIEFSOFT\ameye 1d67f0096b randpm 3 2023-08-04 17:19:39 -04:00
CHIEFSOFT\ameye a8f25842b5 define i 2023-08-04 16:42:40 -04:00
CHIEFSOFT\ameye 262689f10c rand 4 2023-08-04 13:01:56 -04:00
CHIEFSOFT\ameye 86e1be5b64 reset pin 2023-08-04 12:43:15 -04:00
CHIEFSOFT\ameye a039467425 random 2023-08-04 12:30:32 -04:00
CHIEFSOFT\ameye 001b71ab2f Password pin 2023-08-04 12:14:03 -04:00
CHIEFSOFT\ameye 29bfcb8a13 profile pic 2023-08-03 22:45:46 -04:00
CHIEFSOFT\ameye daa8c0e79c fix verify link mobile 2023-08-03 06:47:56 -04:00
CHIEFSOFT\ameye 08c2323b7d Fluterwave key 2023-08-01 11:54:21 -04:00
CHIEFSOFT\ameye e41ea9019c Offer notification Resent 2023-08-01 06:47:15 -04:00
CHIEFSOFT\ameye a50126070d missing tag 2023-08-01 06:16:01 -04:00
CHIEFSOFT\ameye b7f95f9db9 offfer time updated 2023-08-01 06:07:47 -04:00
CHIEFSOFT\ameye 63cd61c64d fix 2023-07-31 21:20:48 -04:00
CHIEFSOFT\ameye 00399560e9 fix b 2023-07-31 21:10:49 -04:00
CHIEFSOFT\ameye 73cc6b97d2 Multiple decalrations 2023-07-31 20:33:39 -04:00
CHIEFSOFT\ameye b911ab052d recent_data 2023-07-31 20:20:26 -04:00
CHIEFSOFT\ameye f4b8fb0746 dash recent 2023-07-31 19:28:15 -04:00
CHIEFSOFT\ameye 7717059f90 fix confirmation 2023-07-29 11:40:52 -04:00
CHIEFSOFT\ameye 6292f7f559 fix missing collon 2023-07-29 11:22:55 -04:00
CHIEFSOFT\ameye 93177d4bcc Top up result 2023-07-29 11:07:41 -04:00
CHIEFSOFT\ameye 5b57e920d7 Top up result 2023-07-29 10:52:11 -04:00
CHIEFSOFT\ameye be5206fb8a fix q 2023-07-28 16:36:06 -04:00
CHIEFSOFT\ameye e125e85b91 fix query 2023-07-28 15:56:06 -04:00
CHIEFSOFT\ameye ff318a00d4 in["tx_ref"] 2023-07-28 15:41:57 -04:00
CHIEFSOFT\ameye 2c035e6288 fix query 2023-07-28 15:20:17 -04:00
CHIEFSOFT\ameye df530231f5 fix bub 2023-07-28 14:39:20 -04:00
CHIEFSOFT\ameye 49d045a225 fix syntx 2023-07-28 14:08:55 -04:00
CHIEFSOFT\ameye 450a733d76 Top up result 2023-07-28 14:01:25 -04:00
CHIEFSOFT\ameye 683096e59a Flutter hook 2023-07-28 08:13:29 -04:00
CHIEFSOFT\ameye 697b971472 HOOKS 2023-07-27 21:53:58 -04:00
CHIEFSOFT\ameye a47e29a319 fix logs 2023-07-27 11:58:37 -04:00
CHIEFSOFT\ameye bd1223dee3 hooks update 2023-07-27 11:53:29 -04:00
CHIEFSOFT\ameye 25bf7c040e hooks 2023-07-27 11:51:49 -04:00
CHIEFSOFT\ameye bca95d4b6f wallet_id 2023-07-27 10:08:46 -04:00
CHIEFSOFT\ameye 6508ad4a7b payment id 2023-07-27 09:39:57 -04:00
CHIEFSOFT\ameye 4815abb36e send money ret 2023-07-27 09:18:51 -04:00
CHIEFSOFT\ameye 8f5e81a9d1 smoney 2023-07-27 09:06:40 -04:00
CHIEFSOFT\ameye 30187feaf1 banner 2023-07-27 08:55:56 -04:00
CHIEFSOFT\ameye 1404234554 send money id 2023-07-27 08:43:54 -04:00
CHIEFSOFT\ameye 647ee19b16 in["member_id"] 2023-07-27 07:12:22 -04:00
CHIEFSOFT\ameye c408bf45dd member id 2023-07-27 07:03:02 -04:00
CHIEFSOFT\ameye f8ddfcc81d member_id 2023-07-27 06:41:42 -04:00
CHIEFSOFT\ameye 5a06cfa2fd fix params 2023-07-27 06:15:42 -04:00
CHIEFSOFT\ameye bcdb1aca69 senderid 2023-07-27 05:41:12 -04:00
CHIEFSOFT\ameye 095c0ee9cc total 2023-07-27 05:09:22 -04:00
CHIEFSOFT\ameye d225072a07 year data 2023-07-27 04:58:00 -04:00
CHIEFSOFT\ameye 2bde1c928c wallet cleanup 2023-07-27 04:44:02 -04:00
CHIEFSOFT\ameye d8b8a615a8 wallet check 2023-07-26 10:22:04 -04:00
CHIEFSOFT\ameye 3700d9fe5a test media 2023-07-25 11:27:13 -04:00
CHIEFSOFT\ameye 5c1e6d5c5d Blog id 2023-07-24 18:47:23 -04:00
CHIEFSOFT\ameye f21935cb34 email files 2023-07-24 11:07:40 -04:00
CHIEFSOFT\ameye bcc8841a0b blog filter added 2023-07-24 08:17:52 -04:00
CHIEFSOFT\ameye 0f6c834c26 log blog in 2023-07-24 07:52:21 -04:00
CHIEFSOFT\ameye f3969e7e49 main_site_url 2023-07-23 09:57:02 -04:00
CHIEFSOFT\ameye c1503e8131 year fix 2023-07-23 08:19:43 -04:00
CHIEFSOFT\ameye 7642d9437a emaol fix 2023-07-23 07:45:55 -04:00
CHIEFSOFT\ameye e3d0e21dbd emails 2023-07-22 22:32:35 -04:00
CHIEFSOFT\ameye ccafcbc52e send money emsil 2023-07-22 15:30:46 -04:00
CHIEFSOFT\ameye ff40d1eced WrenchCrons 2023-07-22 09:35:01 -04:00
CHIEFSOFT\ameye 4eae63419e account_type 2023-07-22 00:58:28 -04:00
CHIEFSOFT\ameye 66538c1629 bank_code 2023-07-22 00:30:46 -04:00
CHIEFSOFT\ameye d4c327ca8a member id 2023-07-21 23:54:33 -04:00
CHIEFSOFT\ameye 64076ad1f5 recipient add 2023-07-21 23:34:42 -04:00
CHIEFSOFT\ameye 3a8df68f77 conditional error 2023-07-21 22:02:19 -04:00
CHIEFSOFT\ameye 870766ff19 bank uid 2023-07-21 21:40:25 -04:00
CHIEFSOFT\ameye e9fe77560c wallet_uid at transfer 2023-07-21 15:29:47 -04:00
CHIEFSOFT\ameye 1cf47aa301 wallet uid 2023-07-21 15:12:24 -04:00
CHIEFSOFT\ameye c2d09c8849 trasnfer limit 2023-07-21 15:00:46 -04:00
CHIEFSOFT\ameye 4f12515705 bankid 2023-07-21 14:50:56 -04:00
CHIEFSOFT\ameye 9c9732501d Recipient id 2023-07-21 14:36:56 -04:00
CHIEFSOFT\ameye cc6ffdce84 bsnkl nsme 2023-07-21 14:15:35 -04:00
CHIEFSOFT\ameye bf2a3f5851 fix query 2023-07-21 13:59:30 -04:00
CHIEFSOFT\ameye 5ba200f3e7 Recipient uid 2023-07-21 13:46:38 -04:00
CHIEFSOFT\ameye 574c98a5da fix format 2023-07-19 20:00:44 -04:00
CHIEFSOFT\ameye 092a60e8e9 fix dashdrecent 2023-07-19 08:24:27 -04:00
CHIEFSOFT\ameye b251f1b5ba fix syntx 2023-07-19 07:46:13 -04:00
CHIEFSOFT\ameye f459542edc Dash Recent 2023-07-19 07:25:49 -04:00
CHIEFSOFT\ameye fdde1b8c2e Blog automation 2023-07-18 21:08:02 -04:00
CHIEFSOFT\ameye 04321d1467 Ask category 2023-07-18 13:48:22 -04:00
CHIEFSOFT\ameye 7286ce7b4e mynotification endpoint error 2023-07-18 12:33:10 -04:00
CHIEFSOFT\ameye 5833429940 dummy notfification data 2023-07-18 12:18:45 -04:00
CHIEFSOFT\ameye c6ed137113 Notifications 2023-07-18 11:05:34 -04:00
CHIEFSOFT\ameye c88c9d8266 Delete card fix 2023-07-18 06:52:57 -04:00
CHIEFSOFT\ameye 1b929e1982 family banner 2023-07-17 08:19:32 -04:00
CHIEFSOFT\ameye 60a9295c44 family banner 2023-07-17 07:47:01 -04:00
CHIEFSOFT\ameye f01688f09e WrenchMedia Path 2023-07-15 23:13:25 -04:00
CHIEFSOFT\ameye aeff548da3 msg uid 2023-07-15 10:22:35 -04:00
CHIEFSOFT\ameye f5292bd8e2 fix err 2023-07-15 07:03:03 -04:00
CHIEFSOFT\ameye fe1393d62c task messsage 2023-07-15 06:36:48 -04:00
CHIEFSOFT\ameye 5df8ada174 intererst debug 2023-07-15 05:22:16 -04:00
CHIEFSOFT\ameye 981a5cd47e fix q 2023-07-14 23:36:15 -04:00
CHIEFSOFT\ameye ce432167fa remove card 2023-07-14 23:18:48 -04:00
CHIEFSOFT\ameye 34c918921e added status 2023-07-14 20:46:13 -04:00
CHIEFSOFT\ameye bee5b56f8b banners on settings 2023-07-14 19:25:35 -04:00
CHIEFSOFT\ameye 934f2d24ce fix val;ues 2023-07-14 17:42:25 -04:00
CHIEFSOFT\ameye e8bb03cbbd debug 2023-07-14 13:58:32 -04:00
CHIEFSOFT\ameye 7808581c16 uid added 2023-07-14 13:40:39 -04:00
CHIEFSOFT\ameye d6143d4944 format settings 2023-07-14 13:00:25 -04:00
CHIEFSOFT\ameye bb075220b5 res0 2023-07-14 12:35:22 -04:00
CHIEFSOFT\ameye 5132ce64f9 account settings 2023-07-14 12:29:06 -04:00
CHIEFSOFT\ameye ada3b94d6e fix q 2023-07-14 10:00:22 -04:00
CHIEFSOFT\ameye ff6f4bbf67 added fee 2023-07-14 06:37:47 -04:00
CHIEFSOFT\ameye 74ed354628 added fee 2023-07-14 06:20:20 -04:00
CHIEFSOFT\ameye cdf1253a0b long WrenchCardRechargePayment 2023-07-13 20:50:47 -04:00
CHIEFSOFT\ameye 07768ce846 previous card chrage 2023-07-13 16:50:21 -04:00
CHIEFSOFT\ameye c9c90322eb fix currency 2023-07-13 11:56:49 -04:00
CHIEFSOFT\ameye 810b839721 $raw_array 2023-07-13 11:39:09 -04:00
CHIEFSOFT\ameye a6bb2430e2 $endpoint 2023-07-13 11:25:31 -04:00
CHIEFSOFT\ameye 433e3efd1d log_message('critical', "WrenchTransactions-Gate 006 ->".$endpoints); 2023-07-13 11:14:47 -04:00
CHIEFSOFT\ameye f4b7b8397a log_message('critical', "WrenchTransactions-Gate 005"); 2023-07-13 10:59:24 -04:00
CHIEFSOFT\ameye 1c69917c26 start credit 2023-07-13 10:34:16 -04:00
CHIEFSOFT\ameye 37acf827d7 Start payment call 2023-07-13 10:17:38 -04:00
CHIEFSOFT\ameye deddc42530 missing cache function 2023-07-13 07:54:07 -04:00
CHIEFSOFT\ameye 6442ea8979 apigate 2023-07-13 07:36:45 -04:00
CHIEFSOFT\ameye 4920294afa Nofifications 2023-07-12 13:00:25 -04:00
CHIEFSOFT\ameye f9abf3c287 added endpoints 2023-07-12 08:06:10 -04:00
CHIEFSOFT\ameye 19e6609b66 WrenchTransactions 2023-07-11 09:48:25 -04:00
CHIEFSOFT\ameye 5fe2bb39fc startcredit 2023-07-11 09:15:37 -04:00
CHIEFSOFT\ameye b99924e927 transaction cases 2023-07-10 17:50:02 -04:00
CHIEFSOFT\ameye 5fea2c50f1 start credit 2023-07-10 17:41:49 -04:00
CHIEFSOFT\ameye 5aeaa0e987 trnsaction Gate 2023-07-10 13:16:25 -04:00
CHIEFSOFT\ameye b6da0ec7a6 fix bug 2023-07-09 20:51:52 -04:00
CHIEFSOFT\ameye 9d98ffd842 checks 2023-07-09 20:42:31 -04:00
CHIEFSOFT\ameye 49c9c34633 session add 2023-07-09 15:25:18 -04:00
CHIEFSOFT\ameye b9f0544303 session upgrade 2023-07-09 15:03:52 -04:00
CHIEFSOFT\ameye 2e27625f97 login google 2023-07-09 14:39:30 -04:00
CHIEFSOFT\ameye c35fb538eb bug 2023-07-09 13:13:56 -04:00
CHIEFSOFT\ameye e6bc4730ca missing constants 2023-07-09 12:55:49 -04:00
CHIEFSOFT\ameye dbfcbd2d40 added logs 2023-07-09 12:20:38 -04:00
CHIEFSOFT\ameye c0e4504683 session start 2023-07-09 08:20:27 -04:00
CHIEFSOFT\ameye 20226ae953 google login 2023-07-09 07:40:13 -04:00
CHIEFSOFT\ameye 29ae79bbfe banners 2023-07-08 23:05:55 -04:00
CHIEFSOFT\ameye f496b7eba2 banner 2023-07-08 22:47:26 -04:00
CHIEFSOFT\ameye 4733b0441e banner 2023-07-08 22:26:14 -04:00
CHIEFSOFT\ameye 89c599662f missing banner 2023-07-08 22:02:53 -04:00
tokslaw7 f262367aff Google oauth code for token exchange 2023-07-09 01:32:31 +00:00
tokslaw7 2703d0c83b Typo 2023-07-09 00:57:18 +00:00
tokslaw7 3739ddcaee Added auxstart API call 2023-07-09 00:56:15 +00:00
tokslaw7 1048638557 Added auxstart API call 2023-07-09 00:08:07 +00:00
CHIEFSOFT\ameye cfc0e8c93c banner fix 2023-07-08 19:06:04 -04:00
CHIEFSOFT\ameye a5e5fd1f4f banner added 2023-07-08 18:50:26 -04:00
CHIEFSOFT\ameye 60bc9cc336 Test 2023-07-08 17:53:55 -04:00
CHIEFSOFT\ameye 5b4453f1c4 test config bread 2023-07-08 17:26:01 -04:00
CHIEFSOFT\ameye c934fb85f9 google config call 2023-07-08 16:59:38 -04:00
CHIEFSOFT\ameye 7e0da0e72c Test return 2023-07-08 16:54:48 -04:00
CHIEFSOFT\ameye f77766a209 Wrench ouuth 2023-07-08 16:41:20 -04:00
CHIEFSOFT\ameye 080d861b11 FIX EMAILS 2023-07-08 11:57:15 -04:00
CHIEFSOFT\ameye 2ecc5c7643 Web Api clean up 2023-07-08 08:41:13 -04:00
CHIEFSOFT\ameye 7a659327ff YR added 2023-07-07 21:39:41 -04:00
CHIEFSOFT\ameye 92ec51b253 Date in emasil 2023-07-07 21:02:34 -04:00
CHIEFSOFT\ameye e7e5da5479 Verify Link return username 2023-07-07 20:09:52 -04:00
CHIEFSOFT\ameye cec28b6cae country bug 2023-07-07 19:58:23 -04:00
CHIEFSOFT\ameye 112b31089f banner @ joib 2023-07-07 12:55:49 -04:00
CHIEFSOFT\ameye 61d521ba42 uid 2023-07-07 12:43:20 -04:00
CHIEFSOFT\ameye 488e60f1e3 job_id 2023-07-07 12:28:08 -04:00
CHIEFSOFT\ameye c9d3f71fbe assign create 2023-07-07 12:10:16 -04:00
CHIEFSOFT\ameye 5d3212234b family uid 2023-07-05 22:10:09 -04:00
CHIEFSOFT\ameye 5debecc116 family_uid 2023-07-05 21:52:05 -04:00
CHIEFSOFT\ameye d4dd10af4c banner bug 2023-07-05 19:15:23 -04:00
CHIEFSOFT\ameye 82fce0aa6b task banners 2023-07-05 10:14:24 -04:00
CHIEFSOFT\ameye 8d16f32677 status txt 2023-07-05 08:43:28 -04:00
CHIEFSOFT\ameye e6743f441d banner add 2023-07-04 19:44:42 -04:00
CHIEFSOFT\ameye cf21097eec fix q 2023-07-04 11:56:49 -04:00
CHIEFSOFT\ameye b097c7a2ba fix query 2023-07-04 11:26:18 -04:00
CHIEFSOFT\ameye 0f03f943f9 Parents suggested list 2023-07-04 11:22:36 -04:00
CHIEFSOFT\ameye af42a41725 list format 2023-07-03 18:20:43 -04:00
CHIEFSOFT\ameye 195aec3f49 fix q 2023-07-03 18:06:23 -04:00
CHIEFSOFT\ameye 4504042ae2 list data 2023-07-03 17:17:20 -04:00
CHIEFSOFT\ameye 6b4b28d163 fix uid 2023-07-03 16:54:33 -04:00
CHIEFSOFT\ameye 331163fb5c Fix Query 2023-07-03 16:37:44 -04:00
CHIEFSOFT\ameye f7e910234b family_uid 2023-07-03 16:24:56 -04:00
CHIEFSOFT\ameye b9337136fb sggested save 2023-07-03 16:23:29 -04:00
CHIEFSOFT\ameye f990a1199e Suggest task 2023-07-03 16:11:13 -04:00
CHIEFSOFT\ameye 3585695701 family lists 2023-07-03 11:41:45 -04:00
CHIEFSOFT\ameye ab081dea0d suggest tasks 2023-07-03 07:18:19 -04:00
CHIEFSOFT\ameye c26799fd35 fix q 2023-07-02 17:24:04 -04:00
CHIEFSOFT\ameye fad81fa012 family task formrter 2023-07-02 16:56:09 -04:00
CHIEFSOFT\ameye 706495a978 family suggested 2023-07-02 16:47:45 -04:00
CHIEFSOFT\ameye 9c32972fbb Blog Ids 2023-07-02 16:21:45 -04:00
CHIEFSOFT\ameye 2ca7586250 Blog URL error 2023-07-02 16:11:55 -04:00
CHIEFSOFT\ameye 41beda2840 family sample tasks 2023-07-02 16:05:35 -04:00
CHIEFSOFT\ameye d2cb32df96 chjange model 2023-07-01 20:37:09 -04:00
CHIEFSOFT\ameye 049927bc07 test api 2023-07-01 20:21:22 -04:00
CHIEFSOFT\ameye a1d33eb259 Blop api 2023-07-01 19:52:01 -04:00
CHIEFSOFT\ameye 55e204576d Adjueted then tab items 2023-07-01 18:43:44 -04:00
CHIEFSOFT\ameye 657f333d34 Fix syntx 2023-07-01 16:35:31 -04:00
CHIEFSOFT\ameye d644201544 Next due dash 2023-07-01 16:18:52 -04:00
CHIEFSOFT\ameye f09e3c4f41 Resource categories 2023-07-01 12:56:39 -04:00
CHIEFSOFT\ameye d22d5f5721 blog data resources 2023-07-01 09:59:08 -04:00
CHIEFSOFT\ameye a1829299f8 blog media 2023-07-01 07:37:41 -04:00
CHIEFSOFT\ameye 9eaa572607 Fix offfers data 2023-07-01 07:22:05 -04:00
CHIEFSOFT\ameye 03a1f49c50 session param 2023-07-01 01:12:10 -04:00
CHIEFSOFT\ameye 4c515808e7 cacher data 2023-07-01 00:55:50 -04:00
CHIEFSOFT\ameye 4a08cae196 Currencies missing 2023-06-30 20:47:32 -04:00
CHIEFSOFT\ameye bac35fe779 blog limit 2023-06-30 19:29:58 -04:00
CHIEFSOFT\ameye 295c9313c6 cache 2023-06-29 23:47:45 -04:00
CHIEFSOFT\ameye 750dd6b43b blog data 2023-06-29 23:29:39 -04:00
CHIEFSOFT\ameye 1416d152cd faq added 2023-06-29 21:27:39 -04:00
CHIEFSOFT\ameye 0049bbe4bd faq added 2023-06-29 20:56:51 -04:00
CHIEFSOFT\ameye 60b917a0df faq added 2023-06-29 20:43:12 -04:00
CHIEFSOFT\ameye 82c9b49a8b faq added 2023-06-29 20:34:04 -04:00
CHIEFSOFT\ameye 51ce1bff8c faq added 2023-06-29 20:14:44 -04:00
CHIEFSOFT\ameye a868eda9b3 fasq added 2023-06-29 15:52:09 -04:00
CHIEFSOFT\ameye 367a1f3092 Public or not public FAQ 2023-06-29 10:22:48 -04:00
CHIEFSOFT\ameye 82436f6396 FAQ data 2023-06-29 08:40:32 -04:00
CHIEFSOFT\ameye 4b5596a540 Resources data 2023-06-28 11:48:19 -04:00
CHIEFSOFT\ameye 4b525e6602 Job status 2023-06-28 10:59:08 -04:00
CHIEFSOFT\ameye 63f246479d Removed deleted jobs 2023-06-28 10:38:36 -04:00
CHIEFSOFT\ameye fa84aa2ff5 Wrench Blog 2023-06-28 07:28:12 -04:00
CHIEFSOFT\ameye b1075b7fec post route added 2023-06-28 07:14:32 -04:00
CHIEFSOFT\ameye b283ac9149 Faq text 2023-06-27 20:37:27 -04:00
CHIEFSOFT\ameye e278146c4a Categoery 2023-06-27 18:08:34 -04:00
CHIEFSOFT\ameye 359541c1a2 Jobs currency 2023-06-27 16:21:57 -04:00
CHIEFSOFT\ameye 31708129a8 Country code 2023-06-27 15:56:01 -04:00
CHIEFSOFT\ameye 2747a0620f Country currecny fixed 2023-06-27 15:35:28 -04:00
CHIEFSOFT\ameye 86d1c1cb69 Job country currenies 2023-06-27 15:24:01 -04:00
CHIEFSOFT\ameye 4614f79ff3 Hard coded currency removed 2023-06-27 15:14:09 -04:00
CHIEFSOFT\ameye 3bac00b6a0 Job list currency 2023-06-27 15:01:53 -04:00
CHIEFSOFT\ameye 008ec7cd0c Query fix 2023-06-26 08:57:42 -04:00
CHIEFSOFT\ameye e3f0931296 result formater 2023-06-26 08:48:11 -04:00
CHIEFSOFT\ameye 838f5167ad New waiying list 2023-06-26 08:47:18 -04:00
CHIEFSOFT\ameye 00afe4a019 Waiting interest list 2023-06-25 18:58:38 -04:00
CHIEFSOFT\ameye 257c262783 noti 2023-06-25 11:55:43 -04:00
CHIEFSOFT\ameye 63efca5041 country data 2023-06-25 10:34:17 -04:00
CHIEFSOFT\ameye 74c2b4be38 notifications 2023-06-25 10:21:38 -04:00
CHIEFSOFT\ameye ce80e421fa Banners 2023-06-25 00:01:21 -04:00
CHIEFSOFT\ameye 26ae23d61a banner text 2023-06-24 23:53:25 -04:00
CHIEFSOFT\ameye f3983c79d4 Banner texts 2023-06-24 23:24:35 -04:00
CHIEFSOFT\ameye d822982a3e banner text 2023-06-24 23:03:58 -04:00
CHIEFSOFT\ameye 121913ece2 Banner texts 2023-06-24 22:52:44 -04:00
CHIEFSOFT\ameye d7afe0df3a json data 2023-06-24 08:46:04 -04:00
CHIEFSOFT\ameye 24db2521b9 Api gate 2023-06-24 08:04:06 -04:00
CHIEFSOFT\ameye 28ce7f47a0 QuestList 2023-06-23 18:17:41 -04:00
CHIEFSOFT\ameye acb356fa14 fotm 2023-06-23 18:06:17 -04:00
CHIEFSOFT\ameye cf7cf8d4e5 format message 2023-06-23 17:50:25 -04:00
CHIEFSOFT\ameye ac5b421f49 char vname 2023-06-23 17:24:58 -04:00
CHIEFSOFT\ameye 4f0586456c offer message 2023-06-23 17:12:39 -04:00
CHIEFSOFT\ameye 14b3cb63a9 members_offer_interest 2023-06-23 15:23:51 -04:00
CHIEFSOFT\ameye 98a765515f return WrenchMarketInterestQuestionList(in, out); 2023-06-23 14:55:22 -04:00
CHIEFSOFT\ameye 123aa8b26e WRENCHBOARD_JOB_INT_QUESTLST 2023-06-23 14:46:53 -04:00
CHIEFSOFT\ameye 247bdf5a13 offerinterestlistmsg 2023-06-23 14:38:49 -04:00
CHIEFSOFT\ameye 62ccc87733 interest_uid_ 2023-06-23 13:26:32 -04:00
CHIEFSOFT\ameye 47a78a5024 Interest message 2023-06-23 11:45:35 -04:00
tokslaw7 421f25c80d Missing dependancies 2023-06-21 12:19:22 +00:00
CHIEFSOFT\ameye fbf3f180c2 interst fix 2023-06-21 07:30:03 -04:00
CHIEFSOFT\ameye 9d2d679fad Intetrest missing 2023-06-20 21:10:39 -04:00
CHIEFSOFT\ameye 41efef536b Offer accept 2023-06-20 20:41:35 -04:00
CHIEFSOFT\ameye d64dba5743 Job cat 2023-06-20 15:55:55 -04:00
CHIEFSOFT\ameye 06105f2940 Result formater 2023-06-20 13:45:37 -04:00
CHIEFSOFT\ameye 43416f458e Card data 2023-06-20 13:24:18 -04:00
CHIEFSOFT\ameye 91274b9ef1 Cards list 2023-06-20 12:37:35 -04:00
CHIEFSOFT\ameye 32c5a3de31 Fix query 2023-06-19 11:23:40 -04:00
CHIEFSOFT\ameye 38db05a5ba Post upload data 2023-06-19 09:48:54 -04:00
CHIEFSOFT\ameye 582d2b9764 dummy category fix 2023-06-19 08:19:59 -04:00
CHIEFSOFT\ameye debc7d0721 cors debug 2023-06-19 07:54:37 -04:00
CHIEFSOFT\ameye 592ae3b5aa Pend Interest 2023-06-18 23:47:24 -04:00
CHIEFSOFT\ameye d5654a3f62 Job category 2023-06-18 23:27:17 -04:00
CHIEFSOFT\ameye 0fcd3dc34a categories 2023-06-18 18:32:29 -04:00
CHIEFSOFT\ameye 6433508605 list categories 2023-06-18 18:25:47 -04:00
tokslaw7 1571f3f121 Fix urldecoding on stripe side 2023-06-18 05:13:54 +00:00
CHIEFSOFT\ameye 927d56e56b missing comntsnts 2023-06-17 22:50:39 -04:00
CHIEFSOFT\ameye 12ebcee037 payment cards 2023-06-17 22:36:58 -04:00
CHIEFSOFT\ameye 92c4cec841 Refer friend style 2023-06-17 19:24:49 -04:00
CHIEFSOFT\ameye acaecd9da5 member is 2023-06-17 12:31:35 -04:00
CHIEFSOFT\ameye f667c6a206 refer to engine 2023-06-17 11:54:22 -04:00
CHIEFSOFT\ameye cd22881269 open ai php 2023-06-16 21:20:28 -04:00
CHIEFSOFT\ameye 468414a91c ask resources 2023-06-16 20:28:35 -04:00
CHIEFSOFT\ameye c1947002cd syntx error 2023-06-16 20:04:09 -04:00
CHIEFSOFT\ameye d75f50455e Open AI part 2023-06-16 19:55:12 -04:00
CHIEFSOFT\ameye 3ada5d17ea client 0 2023-06-16 16:46:36 -04:00
CHIEFSOFT\ameye 16d205485a interest data 2023-06-16 15:37:32 -04:00
CHIEFSOFT\ameye ee27193bec interest processing 2023-06-16 15:26:00 -04:00
CHIEFSOFT\ameye eb7102f262 clientds data 2023-06-16 13:20:12 -04:00
CHIEFSOFT\ameye 751615bc10 client added 2023-06-16 11:01:54 -04:00
CHIEFSOFT\ameye 6c48d7fb48 Faq data 2023-06-15 12:50:43 -04:00
CHIEFSOFT\ameye 3f60f1ffde Currecy code added 2023-06-15 06:53:01 -04:00
CHIEFSOFT\ameye 326f6f9deb firstname error 2023-06-14 10:18:40 -04:00
CHIEFSOFT\ameye 4e4e49531c job to data 2023-06-14 10:04:09 -04:00
CHIEFSOFT\ameye ce23e45d0f Coupon redeem return 2023-06-14 08:39:15 -04:00
CHIEFSOFT\ameye 97197bc676 Job interest price 2023-06-14 07:33:44 -04:00
CHIEFSOFT\ameye 046df39c78 job_action 2023-06-13 20:47:41 -04:00
CHIEFSOFT\ameye 05eb4b04ab CONTRACT_NOTIFY_COMPLETE 2023-06-13 20:33:58 -04:00
CHIEFSOFT\ameye 00ad0b38b2 debug job found 2023-06-13 20:16:27 -04:00
CHIEFSOFT\ameye 48501aa432 contract_uid 2023-06-13 19:44:12 -04:00
CHIEFSOFT\ameye 3d8409864e fix str 2023-06-13 19:22:04 -04:00
CHIEFSOFT\ameye fbe982add0 syntx 2023-06-13 18:02:34 -04:00
CHIEFSOFT\ameye 7ca6824a32 contract_id 2023-06-13 17:54:46 -04:00
CHIEFSOFT\ameye 33136d62ba result format 2023-06-13 12:32:23 -04:00
CHIEFSOFT\ameye e7876578da interest list 2023-06-13 11:48:18 -04:00
CHIEFSOFT\ameye a14bc7cacb contract uid 2023-06-12 20:52:09 -04:00
CHIEFSOFT\ameye ecf8d29a20 formater count 2023-06-11 21:02:27 -04:00
CHIEFSOFT\ameye 335084923e interest count 2023-06-11 20:41:21 -04:00
CHIEFSOFT\ameye e4a0d5f7f9 Interest count 2023-06-11 20:22:18 -04:00
CHIEFSOFT\ameye 55546ada6b Offer Interest logic 2023-06-11 18:21:29 -04:00
CHIEFSOFT\ameye 02d32703a9 short style 2023-06-11 14:13:56 -04:00
CHIEFSOFT\ameye bb8e4646a2 short style 2023-06-11 13:47:01 -04:00
CHIEFSOFT\ameye f104f45917 text fix 2023-06-11 13:30:37 -04:00
CHIEFSOFT\ameye 1931507772 date format 2023-06-11 13:19:50 -04:00
CHIEFSOFT\ameye c80015fc0b Task Status 2023-06-10 19:22:50 -04:00
CHIEFSOFT\ameye 21da8a5c21 fix text 2023-06-10 09:11:44 -04:00
CHIEFSOFT\ameye b6bbd52b62 banner data 2023-06-09 22:45:26 -04:00
CHIEFSOFT\ameye bd4fb5dbe4 Removed past due filter 2023-06-08 13:44:10 -04:00
CHIEFSOFT\ameye e7ee88637a Review filter 2023-06-08 13:24:32 -04:00
CHIEFSOFT\ameye be0655f5e1 Review job codes 2023-06-08 12:52:15 -04:00
CHIEFSOFT\ameye 054e10ac76 Ownmer status fixed 2023-06-07 20:46:52 -04:00
CHIEFSOFT\ameye 8770c8e61e owner status 2023-06-07 10:55:54 -04:00
CHIEFSOFT\ameye 2136e57884 Job filters 2023-06-06 13:07:56 -04:00
CHIEFSOFT\ameye fbc8599ded button text 2023-06-06 11:45:11 -04:00
CHIEFSOFT\ameye 36f9ab520e home banners 2023-06-06 11:18:28 -04:00
CHIEFSOFT\ameye fffeb353ce market message 2023-06-05 11:06:47 -04:00
CHIEFSOFT\ameye ec093bf9bf New inteest API 2023-06-05 10:54:40 -04:00
CHIEFSOFT\ameye 9afb9fb898 New data added 2023-06-05 07:21:30 -04:00
CHIEFSOFT\ameye 99ff54e12d Next task 2023-06-04 21:44:58 -04:00
CHIEFSOFT\ameye 7022dc69de exec err fixed 2023-06-04 21:07:27 -04:00
CHIEFSOFT\ameye f283a851f4 Home activities 2023-06-04 19:18:31 -04:00
CHIEFSOFT\ameye 2e61122286 debug 2023-06-04 16:45:47 -04:00
CHIEFSOFT\ameye 1a44832d3d Tracking flow 2023-06-04 16:06:27 -04:00
CHIEFSOFT\ameye 0c63847c92 Log in file 2023-06-04 15:44:57 -04:00
CHIEFSOFT\ameye ea04d4614c test end file 2023-06-04 15:13:48 -04:00
CHIEFSOFT\ameye b8b4a2448e upload path 2023-06-04 14:54:21 -04:00
CHIEFSOFT\ameye d7cf731b91 config usage 2023-06-03 19:15:56 -04:00
CHIEFSOFT\ameye e06055c580 Moned out position 2023-06-03 18:54:39 -04:00
CHIEFSOFT\ameye c9463cca0f Config file use 2023-06-03 18:30:52 -04:00
CHIEFSOFT\ameye dfe6a6f9c8 Upload path 2023-06-03 16:56:35 -04:00
CHIEFSOFT\ameye 2552160a71 Upload engine 2023-06-03 16:42:11 -04:00
CHIEFSOFT\ameye 871c42bb4a client filter 2023-06-03 09:53:00 -04:00
CHIEFSOFT\ameye 7539df3d3a upload family parts 2023-06-03 09:36:21 -04:00
CHIEFSOFT\ameye 3389258282 Added family folders 2023-06-02 18:44:16 -04:00
CHIEFSOFT\ameye eb9b8e5e3c call backend bug 2023-06-02 16:44:37 -04:00
CHIEFSOFT\ameye 14cab76805 File upload 2023-06-02 16:08:59 -04:00
CHIEFSOFT\ameye 47782693ba file upload 2023-06-02 15:27:07 -04:00
CHIEFSOFT\ameye db910e9ad9 file save 2023-06-02 13:18:12 -04:00
CHIEFSOFT\ameye 738556f4e1 uploasd data 2023-06-02 12:56:24 -04:00
CHIEFSOFT\ameye 954effd293 wreite to file 2023-06-02 12:27:45 -04:00
CHIEFSOFT\ameye b789290166 Call backend bug 2023-06-02 06:44:16 -04:00
tokslaw7 edb6681b73 Fixed trailing slash 2023-06-02 08:35:17 +00:00
CHIEFSOFT\ameye a310577190 upload test 2023-06-01 23:14:09 -04:00
CHIEFSOFT\ameye dfeb118149 test file path 2023-06-01 22:24:36 -04:00
CHIEFSOFT\ameye a6a520a99f upload path test 2023-06-01 21:27:09 -04:00
CHIEFSOFT\ameye 2f2f409ffe upload control 2023-06-01 20:58:15 -04:00
CHIEFSOFT\ameye 0c5660de1f Filer uploads 2023-06-01 12:43:58 -04:00
CHIEFSOFT\ameye 66af574c17 Fix data , upload routes 2023-06-01 10:08:11 -04:00
CHIEFSOFT\ameye f60f4cf9fd job uid lenght 2023-06-01 09:24:49 -04:00
CHIEFSOFT\ameye e4f07fe122 blog card 2023-05-30 20:15:04 -04:00
tokslaw7 4efa5eb616 filesystem access 2023-05-30 23:40:05 +00:00
tokslaw7 287fe24ef2 Filesystem access 2023-05-30 23:03:32 +00:00
CHIEFSOFT\ameye f4b18e53f7 Slider data 2023-05-30 17:34:50 -04:00
CHIEFSOFT\ameye 14bd768002 FIX CARD TYPE 2023-05-30 17:19:20 -04:00
CHIEFSOFT\ameye 7579c55e68 item count 2023-05-30 16:38:23 -04:00
CHIEFSOFT\ameye 557e1abd96 fix code 2023-05-30 16:13:38 -04:00
CHIEFSOFT\ameye bca0348a37 syntx err 2023-05-30 14:02:55 -04:00
CHIEFSOFT\ameye 5ff0d24040 syntx fix 2023-05-30 13:53:15 -04:00
CHIEFSOFT\ameye ddd2bd3859 syntx fix 2023-05-30 13:44:23 -04:00
CHIEFSOFT\ameye 56f005a04c reco engine 2023-05-30 13:34:34 -04:00
CHIEFSOFT\ameye b94f1be86b reco added 2023-05-30 11:19:44 -04:00
CHIEFSOFT\ameye 290a6114cb Offer id 2023-05-29 13:42:29 -04:00
CHIEFSOFT\ameye db00b3a0e0 Resoures starter 2023-05-29 13:03:32 -04:00
CHIEFSOFT\ameye f7e966d60d Job data 2023-05-29 07:40:54 -04:00
CHIEFSOFT\ameye 32c1d0ee5e Job owner id 2023-05-28 19:39:11 -04:00
CHIEFSOFT\ameye 9099e17d6b job id 2023-05-28 19:15:28 -04:00
CHIEFSOFT\ameye ef44482144 Offer Response updated 2023-05-28 18:44:08 -04:00
CHIEFSOFT\ameye 13f5ea5a36 Offer Data 2023-05-28 15:11:24 -04:00
CHIEFSOFT\ameye 2a1305dc39 fic conclude 2023-05-28 08:54:41 -04:00
CHIEFSOFT\ameye f381ffc9f6 Offers response 2023-05-28 08:17:03 -04:00
CHIEFSOFT\ameye 7b9b5db617 Aux login 2023-05-26 12:45:35 -04:00
CHIEFSOFT\ameye 77dbc33e4a LOGIN AUX 2023-05-26 12:20:31 -04:00
CHIEFSOFT\ameye 610f91e9f4 aux login 2023-05-26 12:04:01 -04:00
CHIEFSOFT\ameye d3c40d9a26 Assign jobs 2023-05-26 11:08:13 -04:00
CHIEFSOFT\ameye 26df9f3254 assign system 2023-05-25 22:34:03 -04:00
CHIEFSOFT\ameye d8d3619811 Assign task 2023-05-25 21:59:06 -04:00
CHIEFSOFT\ameye 9e60c746e3 fix q 2023-05-25 08:45:31 -04:00
CHIEFSOFT\ameye f94ffb76f8 fix query 2023-05-25 06:52:01 -04:00
CHIEFSOFT\ameye 29fed4a3a2 fix post job 2023-05-25 06:29:16 -04:00
CHIEFSOFT\ameye d4b14c84ff family uid 2023-05-21 15:31:05 -04:00
CHIEFSOFT\ameye d138e06325 family session fix 2023-05-21 12:20:17 -04:00
CHIEFSOFT\ameye a27ce97b05 family login 2023-05-21 12:07:04 -04:00
CHIEFSOFT\ameye 0c35e8f564 Create a fimaily account 2023-05-21 12:01:35 -04:00
CHIEFSOFT\ameye a0dd6791a3 family login 2023-05-21 11:21:43 -04:00
CHIEFSOFT\ameye 95962eac33 Login fix 2023-05-21 10:47:55 -04:00
CHIEFSOFT\ameye fc72a1697f Family login 2023-05-21 10:40:55 -04:00
CHIEFSOFT\ameye a1d0842863 fix users pin 2023-05-21 07:28:50 -04:00
CHIEFSOFT\ameye 7104c746a9 error management 2023-05-21 07:15:01 -04:00
CHIEFSOFT\ameye d53f1db9c2 fix user lenght 2023-05-20 22:00:21 -04:00
CHIEFSOFT\ameye 5d4a42297a number gen 2023-05-20 21:36:12 -04:00
CHIEFSOFT\ameye 9d47860950 fix size 2023-05-20 20:40:49 -04:00
CHIEFSOFT\ameye bea0fecbac pin set 2023-05-20 20:27:04 -04:00
CHIEFSOFT\ameye 9f7628b394 Generating username 2023-05-20 19:01:03 -04:00
CHIEFSOFT\ameye d75900e9ed fix syntx 2023-05-20 18:13:54 -04:00
CHIEFSOFT\ameye d00f24fa31 fix syntx 2023-05-20 17:43:28 -04:00
CHIEFSOFT\ameye 5c71313172 Initialize account 2023-05-20 17:29:37 -04:00
CHIEFSOFT\ameye a99ebdc80f Fix links url 2023-05-20 17:18:52 -04:00
CHIEFSOFT\ameye 9058696e1b Family acc 2023-05-20 12:19:51 -04:00
CHIEFSOFT\ameye 691b8cf9e9 family manage 2023-05-20 09:46:41 -04:00
CHIEFSOFT\ameye 2c41e68c7d Home banners 2023-05-20 01:34:28 -04:00
CHIEFSOFT\ameye f22af10d6e syntx fix 2023-05-20 01:18:11 -04:00
CHIEFSOFT\ameye 243f880742 total rec 2023-05-20 01:10:13 -04:00
CHIEFSOFT\ameye eb72989333 syntx fix 2023-05-19 16:51:43 -04:00
CHIEFSOFT\ameye 3554c3dfe8 fix send 2023-05-19 16:43:20 -04:00
CHIEFSOFT\ameye 8cac594685 pedning job actions 2023-05-19 16:10:56 -04:00
CHIEFSOFT\ameye 7bb38b177e Added job backends 2023-05-19 13:02:39 -04:00
CHIEFSOFT\ameye 331cc1a878 Pending Job Manage 2023-05-19 12:35:33 -04:00
CHIEFSOFT\ameye a2bbef8a1e Job edit errors 2023-05-19 06:24:36 -04:00
CHIEFSOFT\ameye 7d361efb3d Result formating 2023-05-18 11:53:21 -04:00
CHIEFSOFT\ameye c82f368e47 missing vname 2023-05-18 10:35:19 -04:00
CHIEFSOFT\ameye c9983673b3 Active job list 2023-05-18 10:27:38 -04:00
CHIEFSOFT\ameye 1dfdebf8ca user active job format 2023-05-15 19:19:00 -04:00
CHIEFSOFT\ameye ad5bfce68e sntx error 2023-05-15 19:03:36 -04:00
CHIEFSOFT\ameye eb999b3631 Active Job 2023-05-15 18:55:18 -04:00
CHIEFSOFT\ameye eef1857ec4 activetaskslist 2023-05-15 18:40:28 -04:00
CHIEFSOFT\ameye 6a3d7e0e8f fix q 2023-05-15 11:42:32 -04:00
CHIEFSOFT\ameye a40cf58092 fix q 2023-05-15 11:22:16 -04:00
CHIEFSOFT\ameye 1edda40993 Active list 2023-05-14 21:37:10 -04:00
CHIEFSOFT\ameye 51ab4d9b75 Format err 2023-05-14 18:13:22 -04:00
CHIEFSOFT\ameye 19ba05c96f Active job format 2023-05-14 16:39:06 -04:00
CHIEFSOFT\ameye 585b92656b fix bug 2023-05-14 15:46:37 -04:00
CHIEFSOFT\ameye 7123bd94f7 format active jobs 2023-05-14 15:31:59 -04:00
CHIEFSOFT\ameye 7edde72cb3 sntx error 2023-05-14 14:50:54 -04:00
CHIEFSOFT\ameye 51de38a069 Active job list - managers 2023-05-14 14:40:39 -04:00
CHIEFSOFT\ameye 7f0a18fae2 manager active job list 2023-05-14 14:15:46 -04:00
CHIEFSOFT\ameye 5babad7684 formater update 2023-05-12 14:42:09 -04:00
CHIEFSOFT\ameye c816f475a7 syntx fix 2023-05-11 09:21:14 -04:00
CHIEFSOFT\ameye 07b5138f39 update jobs 2023-05-11 09:12:09 -04:00
CHIEFSOFT\ameye 58abb54836 sntx fix 2023-05-11 09:01:18 -04:00
CHIEFSOFT\ameye e21fe33fc2 Job manage 2023-05-11 08:54:16 -04:00
CHIEFSOFT\ameye bdd44f9bb1 Merge branch 'master' of https://gitlab.chiefsoft.net/WrenchBoard/WrenchBoradWeb 2023-05-11 07:31:47 -04:00
CHIEFSOFT\ameye 92c5e6ccb2 Job edit 2023-05-11 07:31:27 -04:00
Olusesan Ameye f46218ef2e Merge branch 'master' of ssh://gitlab.chiefsoft.net/WrenchBoard/WrenchBoradWeb 2023-05-10 03:37:47 +00:00
Olusesan Ameye 8da9b82c83 Implement cache bust 2023-05-10 03:37:31 +00:00
CHIEFSOFT\ameye fd0bc9af69 Fix select 2023-05-09 18:19:39 -04:00
CHIEFSOFT\ameye e0cd3ad9a9 err fix 2023-05-09 18:05:34 -04:00
CHIEFSOFT\ameye d1c9f7d83f job agree 2023-05-09 17:48:09 -04:00
CHIEFSOFT\ameye 069d03bee9 Job agree 2023-05-09 16:01:55 -04:00
CHIEFSOFT\ameye 9528fd4e3c missing family data 2023-05-09 12:34:10 -04:00
CHIEFSOFT\ameye 23457f36cc Falily detail 2023-05-09 12:02:42 -04:00
CHIEFSOFT\ameye 33209e7db1 Bug fix 2023-05-08 16:24:20 -04:00
CHIEFSOFT\ameye cfab5f5e9c Update family 2023-05-08 16:15:12 -04:00
CHIEFSOFT\ameye 1ec04074cf uid added 2023-05-08 15:47:21 -04:00
CHIEFSOFT\ameye 0ed87686bc Qr fix 2023-05-08 13:25:42 -04:00
CHIEFSOFT\ameye 5440a7c695 query bug 2023-05-08 13:07:42 -04:00
CHIEFSOFT\ameye b2808741ac Family list formater 2023-05-08 13:00:45 -04:00
CHIEFSOFT\ameye 325d56b192 Family add 2023-05-08 12:52:04 -04:00
CHIEFSOFT\ameye a46385e0a0 Familiy list 2023-05-08 12:37:02 -04:00
CHIEFSOFT\ameye aa2a1a2f5c Family backend 2023-05-08 11:22:30 -04:00
CHIEFSOFT\ameye bf705cef5b Userrs tasks 2023-05-07 17:38:12 -04:00
CHIEFSOFT\ameye 5a6852fb10 fix q 2023-05-07 07:24:52 -04:00
CHIEFSOFT\ameye 94b553b9fa sessionId lenght 2023-05-07 07:09:53 -04:00
CHIEFSOFT\ameye 501c807b73 fix q 2023-05-06 19:37:48 -04:00
CHIEFSOFT\ameye 019e7912e8 jobs formated 2023-05-06 19:26:19 -04:00
CHIEFSOFT\ameye d21b76aabb fix q 2023-05-06 18:38:46 -04:00
CHIEFSOFT\ameye 6747748263 Job offer devworks 2023-05-06 17:25:16 -04:00
CHIEFSOFT\ameye afa2f030a5 manager offers 2023-05-06 17:02:12 -04:00
CHIEFSOFT\ameye 74b30d41de Manager offers liist 2023-05-06 16:39:49 -04:00
CHIEFSOFT\ameye 86aa029442 fix missing parts 2023-05-06 14:10:13 -04:00
Olu Amey 7717b1137b fix member id bug 2023-05-04 06:59:17 -04:00
Olu Amey 98d3a7bba9 reset pass 2023-05-04 06:43:32 -04:00
Olu Amey 3688897dbf Pass reset filter 2023-05-03 07:21:57 -04:00
Olu Amey e56a3c7da4 Complete treset password 2023-05-03 06:56:07 -04:00
Olu Amey d681b90fb2 Start topup 2023-05-02 12:20:18 -04:00
DESKTOP-GBA0BK8\Admin a984bfc49d Rest pass route 2023-04-28 20:02:35 -04:00
DESKTOP-GBA0BK8\Admin d19549a2cc reset password 2023-04-28 19:40:17 -04:00
DESKTOP-GBA0BK8\Admin 0e43eb8d8d Api cec 2023-04-27 20:30:27 -04:00
DESKTOP-GBA0BK8\Admin 2275196e74 recip id 2023-04-27 20:11:13 -04:00
DESKTOP-GBA0BK8\Admin 0358dd3de5 Send moeny path 2023-04-27 19:52:52 -04:00
DESKTOP-GBA0BK8\Admin 8eae25f04c Create login 2023-04-27 18:09:00 -04:00
DESKTOP-GBA0BK8\Admin 9a7705fd96 server name 2023-04-27 10:52:18 -04:00
DESKTOP-GBA0BK8\Admin 5f22c718c9 Srver name fixed 2023-04-27 10:39:25 -04:00
DESKTOP-GBA0BK8\Admin 8b978b35a8 syntx err 2023-04-27 10:13:10 -04:00
DESKTOP-GBA0BK8\Admin 09aabdd980 username needed 2023-04-27 10:11:54 -04:00
DESKTOP-GBA0BK8\Admin cab0a0f00c Complete account 2023-04-27 09:58:15 -04:00
DESKTOP-GBA0BK8\Admin 7c913a3f47 complete sign up 2023-04-27 09:12:44 -04:00
DESKTOP-GBA0BK8\Admin 471a9b0f7d complete sign up 2023-04-27 08:52:32 -04:00
DESKTOP-GBA0BK8\Admin 193d634cdc Add recipeint 2023-04-27 06:26:39 -04:00
DESKTOP-GBA0BK8\Admin 84e9268d90 Local Links 2023-04-27 06:01:08 -04:00
DESKTOP-GBA0BK8\Admin 3aaa5cbce0 Local links for test 2023-04-27 05:19:21 -04:00
DESKTOP-GBA0BK8\Admin aa7a1fb6a3 format error 2023-04-26 22:04:03 -04:00
DESKTOP-GBA0BK8\Admin d646aca6e4 sntx error 2023-04-26 21:51:19 -04:00
DESKTOP-GBA0BK8\Admin 3524275241 jpob formaterer 2023-04-26 21:42:13 -04:00
DESKTOP-GBA0BK8\Admin 70c898ee1c missed vname 2023-04-26 21:27:02 -04:00
DESKTOP-GBA0BK8\Admin 9a09fca09f Job call 2023-04-26 21:23:58 -04:00
DESKTOP-GBA0BK8\Admin 362610e0bb End point job list 2023-04-26 13:41:37 -04:00
DESKTOP-GBA0BK8\Admin 9997a6750b My job list 2023-04-26 13:27:06 -04:00
DESKTOP-GBA0BK8\Admin 0960bfc96d test offer list function 2023-04-25 21:08:25 -04:00
DESKTOP-GBA0BK8\Admin 944cdd86fc const def 2023-04-25 21:01:01 -04:00
DESKTOP-GBA0BK8\Admin f8a02ee1a6 define missing 2023-04-25 16:20:47 -04:00
DESKTOP-GBA0BK8\Admin 16c316c69f Fix dummy cat 2023-04-25 16:18:03 -04:00
DESKTOP-GBA0BK8\Admin add8dbb406 Home banners 2023-04-25 15:50:55 -04:00
DESKTOP-GBA0BK8\Admin 297d865b83 improve verification 2023-04-25 10:03:05 -04:00
DESKTOP-GBA0BK8\Admin 4056024c18 verify link 2023-04-25 09:45:07 -04:00
DESKTOP-GBA0BK8\Admin a2e66d66f6 Buffer Signup Data format 2023-04-25 06:51:57 -04:00
DESKTOP-GBA0BK8\Admin 646eefc0f8 Updated job format 2023-04-24 21:36:28 -04:00
tokslaw7 cff5c17d28 Fix 2023-04-25 00:10:33 +00:00
tokslaw7 3234201ff1 CORS fix 2023-04-25 00:04:30 +00:00
tokslaw7 7529f16f7d CORS fix 2023-04-24 23:11:12 +00:00
Olusesan Ameye 67608d6590 Added logs directory 2023-04-24 21:24:41 +00:00
Olusesan Ameye 2862c98d74 Removed logs 2023-04-24 21:22:44 +00:00
DESKTOP-GBA0BK8\Admin 7a8eb64e0b Account type format 2023-04-24 13:34:48 -04:00
DESKTOP-GBA0BK8\Admin ea943b71db fix queries 2023-04-24 13:04:17 -04:00
DESKTOP-GBA0BK8\Admin 398dca2a2f selection functions 2023-04-24 12:50:33 -04:00
DESKTOP-GBA0BK8\Admin 2a8d1cabdc fix formater 2023-04-24 11:10:27 -04:00
DESKTOP-GBA0BK8\Admin c1e88f0ade missing defination 2023-04-24 07:32:14 -04:00
DESKTOP-GBA0BK8\Admin a858c7ecd6 Format referrer hx 2023-04-23 11:40:58 -04:00
DESKTOP-GBA0BK8\Admin b41950b319 Referer hx 2023-04-23 11:16:31 -04:00
DESKTOP-GBA0BK8\Admin 31f120f707 country formater 2023-04-23 09:30:15 -04:00
DESKTOP-GBA0BK8\Admin c0b0523a69 Countrey banks format 2023-04-23 09:20:56 -04:00
DESKTOP-GBA0BK8\Admin 3c4387f164 Quates error 2023-04-23 09:10:41 -04:00
DESKTOP-GBA0BK8\Admin bc4f1fb699 offset missed 2023-04-23 09:03:00 -04:00
DESKTOP-GBA0BK8\Admin 8ee297715c Country banks 2023-04-23 09:01:27 -04:00
DESKTOP-GBA0BK8\Admin 3e53281ac5 Reffere hx 2023-04-23 08:36:32 -04:00
DESKTOP-GBA0BK8\Admin 57c7567931 refer end point 2023-04-23 07:02:36 -04:00
DESKTOP-GBA0BK8\Admin 16016428d8 added uid 2023-04-23 05:46:28 -04:00
DESKTOP-GBA0BK8\Admin 67843d18bf syntax error 2023-04-23 05:38:16 -04:00
DESKTOP-GBA0BK8\Admin 2d49e5fb46 Update profile 2023-04-23 05:36:37 -04:00
DESKTOP-GBA0BK8\Admin 5aa9f6793a update profile api 2023-04-22 17:59:40 -04:00
DESKTOP-GBA0BK8\Admin c563cbe210 country list 2023-04-22 16:29:37 -04:00
DESKTOP-GBA0BK8\Admin d5cb848644 remove syntax error 2023-04-22 15:48:02 -04:00
DESKTOP-GBA0BK8\Admin 7817d1f81f fix syntax 2023-04-22 15:39:17 -04:00
DESKTOP-GBA0BK8\Admin 9e8577a6a5 Delete account module 2023-04-22 15:32:03 -04:00
DESKTOP-GBA0BK8\Admin ae67da918b Recipients list 2023-04-22 15:15:04 -04:00
DESKTOP-GBA0BK8\Admin a0f75d63b0 selection data 2023-04-22 13:27:25 -04:00
DESKTOP-GBA0BK8\Admin 5f355713c0 puchase hx formart 2023-04-22 10:48:19 -04:00
DESKTOP-GBA0BK8\Admin 94d6cd659a And point added 2023-04-22 07:54:50 -04:00
DESKTOP-GBA0BK8\Admin 849d3ebb10 Hx grouping 2023-04-22 07:36:05 -04:00
DESKTOP-GBA0BK8\Admin eeb98cb5d3 Purchase hixtory 2023-04-22 07:10:44 -04:00
DESKTOP-GBA0BK8\Admin b1bc8a4658 Adjusted the email account 2023-04-22 06:30:13 -04:00
DESKTOP-GBA0BK8\Admin 1aecd46811 updated wallet return 2023-04-22 05:18:08 -04:00
DESKTOP-GBA0BK8\Admin e7a6791874 internal retrurn added 2023-04-21 15:06:07 -04:00
DESKTOP-GBA0BK8\Admin 6685463f71 cors support 2023-04-19 21:51:10 -04:00
DESKTOP-GBA0BK8\Admin d2ee46f22d cors 2023-04-19 21:34:20 -04:00
DESKTOP-GBA0BK8\Admin 437b0817a3 add_header 2023-04-19 20:29:56 -04:00
DESKTOP-GBA0BK8\Admin afade69e6e Cord debug 2023-04-19 20:13:17 -04:00
DESKTOP-GBA0BK8\Admin f0ffa57790 debug logs 2023-04-19 19:59:02 -04:00
DESKTOP-GBA0BK8\Admin bee0301422 Cors configure 2023-04-19 19:31:54 -04:00
DESKTOP-GBA0BK8\Admin 1957fc789d add to .htaccess 2023-04-19 18:56:02 -04:00
DESKTOP-GBA0BK8\Admin 00396b8e17 Added cors filters 2023-04-18 19:44:05 -04:00
DESKTOP-GBA0BK8\Admin 3884bbf561 header set 2023-04-18 16:45:13 -04:00
DESKTOP-GBA0BK8\Admin 24aa32dedf remove header 2023-04-18 16:37:13 -04:00
DESKTOP-GBA0BK8\Admin 662079cedf cors allowded 2023-04-18 11:31:55 -04:00
DESKTOP-GBA0BK8\Admin cd4edfc305 CORS control 2023-04-18 10:58:19 -04:00
tokslaw7 65c5cb213a Fix type 2023-04-18 12:00:16 +00:00
tokslaw7 ebe38c9e3f Turn graylog back 2023-04-18 11:52:48 +00:00
tokslaw7 2dde3b2417 Supress graylog warning 2023-04-18 11:46:30 +00:00
tokslaw7 de33aca665 Comment out graylog 2023-04-18 11:31:57 +00:00
DESKTOP-GBA0BK8\Admin ab9a089034 back end call 2023-04-18 04:34:37 -04:00
DESKTOP-GBA0BK8\Admin 45cb2f10ea debug 2023-04-17 20:33:13 -04:00
DESKTOP-GBA0BK8\Admin c58d556c1a commented back end call 2023-04-17 15:49:13 -04:00
DESKTOP-GBA0BK8\Admin 62ba436b25 removed comments 2023-04-17 13:42:49 -04:00
DESKTOP-GBA0BK8\Admin c09824d08b out reference 2023-04-17 13:14:41 -04:00
DESKTOP-GBA0BK8\Admin 0e707debad Debug log added 2023-04-17 13:03:00 -04:00
DESKTOP-GBA0BK8\Admin 3cf8bb04e7 Testiung API 2023-04-17 12:47:33 -04:00
DESKTOP-GBA0BK8\Admin 69327d8e04 back end call 2023-04-16 17:34:43 -04:00
DESKTOP-GBA0BK8\Admin 5bcfeac3c4 Fix backed call 2023-04-16 16:59:25 -04:00
DESKTOP-GBA0BK8\Admin 4487ba9db8 fix backend connection 2023-04-16 16:30:57 -04:00
DESKTOP-GBA0BK8\Admin eac14198df isolate backend call 2023-04-16 16:21:06 -04:00
DESKTOP-GBA0BK8\Admin 7c4aae2430 backend called 2023-04-16 16:09:29 -04:00
DESKTOP-GBA0BK8\Admin 689f014c6a back end call 2023-04-16 15:59:37 -04:00
DESKTOP-GBA0BK8\Admin ce48f5080f added json format 2023-04-16 15:50:00 -04:00
DESKTOP-GBA0BK8\Admin fa64dec989 Array fix 2023-04-16 15:37:08 -04:00
DESKTOP-GBA0BK8\Admin 41c485f7aa Case added 2023-04-16 15:25:28 -04:00
DESKTOP-GBA0BK8\Admin 1737f040dc Added apigate parts 2023-04-16 15:09:47 -04:00
DESKTOP-GBA0BK8\Admin 163a9dcbc1 debugging apigate 2023-04-16 14:58:42 -04:00
DESKTOP-GBA0BK8\Admin 1dbf1dcad9 comment api call 2023-04-16 14:46:20 -04:00
DESKTOP-GBA0BK8\Admin e74070ca1f Clean up Api call 2023-04-16 14:30:27 -04:00
DESKTOP-GBA0BK8\Admin 666c2da6c8 Header removed 2023-04-16 14:16:54 -04:00
DESKTOP-GBA0BK8\Admin 5046454b73 Backend Model 2023-04-16 14:05:55 -04:00
DESKTOP-GBA0BK8\Admin 77c7cbb354 debug logs 2023-04-16 12:56:20 -04:00
DESKTOP-GBA0BK8\Admin ec29bf309c backend user 2023-04-16 08:43:24 -04:00
DESKTOP-GBA0BK8\Admin 44d491603f call backend 2023-04-16 08:29:46 -04:00
DESKTOP-GBA0BK8\Admin 43cd6d3792 back end call 2023-04-16 07:17:00 -04:00
DESKTOP-GBA0BK8\Admin c698dfec3e backend model 2023-04-16 07:01:37 -04:00
DESKTOP-GBA0BK8\Admin 054167b1a6 fix model contents 2023-04-16 06:35:56 -04:00
DESKTOP-GBA0BK8\Admin ab1a3d5dcf resuest trait 2023-04-15 23:18:01 -04:00
DESKTOP-GBA0BK8\Admin 613c417a0a removed headers 2023-04-15 22:55:22 -04:00
DESKTOP-GBA0BK8\Admin b79c1a6874 log added 2023-04-15 22:41:10 -04:00
DESKTOP-GBA0BK8\Admin 0b450a1440 Formatter Model 2023-04-15 22:30:52 -04:00
DESKTOP-GBA0BK8\Admin d38cd270d7 Formatter mocdel 2023-04-15 22:04:23 -04:00
DESKTOP-GBA0BK8\Admin 33f108cc89 Case section added 2023-04-15 21:49:51 -04:00
DESKTOP-GBA0BK8\Admin f30e87d68b config added 2023-04-15 21:43:47 -04:00
DESKTOP-GBA0BK8\Admin cc76bd457f All end point 2023-04-15 21:39:54 -04:00
DESKTOP-GBA0BK8\Admin 46f0b0437c Merge branch 'master' of https://gitlab.chiefsoft.net/WrenchBoard/WrenchBoradWeb 2023-04-15 21:39:27 -04:00
DESKTOP-GBA0BK8\Admin c2706fcac8 Added sample gate call 2023-04-15 21:35:23 -04:00
tokslaw7 9b589c6356 Test 2023-04-16 01:27:17 +00:00
DESKTOP-GBA0BK8\Admin fc4e275bcf get job list 2023-04-15 20:46:45 -04:00
tokslaw7 0cf771f8b3 Code Igniter fixes 2023-04-16 00:43:24 +00:00
DESKTOP-GBA0BK8\Admin 799bc06d0f Space 2023-04-15 19:59:58 -04:00
DESKTOP-GBA0BK8\Admin 2b15bb8a99 adding comented may need 2023-04-12 22:39:46 -04:00
DESKTOP-GBA0BK8\Admin 4eba67a416 New blog path 2023-04-12 21:32:58 -04:00
DESKTOP-GBA0BK8\Admin 5adc1b46bf Added redis to load 2023-04-12 09:50:27 -04:00
DESKTOP-GBA0BK8\Admin 9f9d1fa916 Added route for API 2023-04-12 08:19:08 -04:00
DESKTOP-GBA0BK8\Admin 053a429cca My jobs added 2023-03-23 16:48:30 -04:00
DESKTOP-GBA0BK8\Admin 26d2b97e21 job format 2023-03-19 00:29:18 -04:00
DESKTOP-GBA0BK8\Admin b9f1a56cb2 Category added 2023-03-19 00:11:27 -04:00
DESKTOP-GBA0BK8\Admin 84cbbfadc7 currency code 2023-03-18 23:36:36 -04:00
DESKTOP-GBA0BK8\Admin 84dc7355e4 Job country added 2023-03-18 22:35:39 -04:00
DESKTOP-GBA0BK8\Admin aa48339d76 Job data format 2023-03-18 21:53:16 -04:00
DESKTOP-GBA0BK8\Admin 32b94e8ee5 Formted jobs list 2023-03-18 21:26:56 -04:00
Olusesan Ameye 87b07b4d6b Merge branch 'master' of ssh://gitlab.chiefsoft.net/WrenchBoard/WrenchBoradWeb 2023-03-04 02:52:37 +00:00
Olusesan Ameye 4123d3655f Restart policy 2023-03-04 02:52:25 +00:00
tolik 9c7f5ed9ab BKO API endpoint 2023-01-15 06:45:22 +08:00
Olu Amey 764e8db187 Back endpoint 2023-01-07 16:48:05 -05:00
Olu Amey 074919e973 Add delete calls 2022-12-31 14:31:18 -05:00
Olu Amey 88821c96e3 Added disable account tester 2022-12-31 10:27:24 -05:00
Olu Amey 3dd46ec357 removed comment 2022-12-30 23:26:55 -05:00
Olu Amey 190fd11193 temporarily removed headers 2022-12-30 23:03:33 -05:00
tolik 49affc3ebf Skip HTTP_COOKIE vaiable 2022-12-24 08:49:26 +08:00
tolik 5ba34182c7 Port mixup fix 2022-12-18 10:20:04 +08:00
tolik c6cbdd5c5f Fix 2022-12-18 07:30:11 +08:00
tolik c17bd38d33 Top-level context (Linux required) 2022-12-18 07:17:35 +08:00
tolik 0b407ac587 Externalize config 2022-12-18 06:56:36 +08:00
tolik 67a2e4f2bf CI fix 2022-12-18 06:45:39 +08:00
tolik 04819714be GELF remote logging to graylog 2022-12-11 11:50:01 +08:00
tolik 31bd0c87ae Logger configuration & control output level 2022-12-11 08:50:45 +08:00
tolik 37310d4f28 Doc link 2022-12-04 09:12:02 +08:00
tolik 04f5194a91 Switch the extension to use Fast Parameter Parsing API 2022-12-04 09:03:14 +08:00
tolik a26f7f5c9f Make PHP 7.4 the default 2022-12-04 08:56:23 +08:00
Fluxtra 1da08a90be Remove logs from commit 2022-11-27 12:40:57 -05:00
tolik 76ba89b3b2 CI3 => CI4 2022-11-27 14:44:55 +08:00
tolik 5ae91cce8b /svs/user API support 2022-11-27 14:14:59 +08:00
Fluxtra 54971b7319 fix 2022-11-27 00:21:41 -05:00
tolik e52f9d7700 Container fix 2022-11-27 12:46:09 +08:00
tolik caa59b9441 www-api 2022-11-27 07:38:56 +08:00
tolik 13a289a410 PHP-FPM 7.4 2022-11-27 07:38:42 +08:00
tolik d17fa32058 Fix configuration & docker file 2022-11-27 06:23:02 +08:00
tolik 3d719c230a php:7.4 2022-11-21 09:02:44 +08:00
Fluxtra b0a1e7b19b adjust ngix 2022-11-20 16:53:12 -05:00
Olu Amey 6a762c0b91 www-api 2022-11-20 08:22:39 -05:00
Olu Amey a2b11fb37f adjust ngix 2022-11-20 08:19:50 -05:00
Olu Amey ffeea1a42e delete_files 2022-11-20 08:02:11 -05:00
Olu Amey 88456b68a0 delete_files 2022-11-20 07:59:23 -05:00
Olu Amey e1bbb622e3 ci_to_3 2022-11-20 07:56:32 -05:00
Olu Amey aaf5e6f432 delete_files 2022-11-20 07:52:04 -05:00
tolik a2a42348c8 Fix path 2022-11-20 15:23:05 +08:00
tolik 527428edbf Add www-api 2022-11-20 15:19:47 +08:00
tolik 030501fe50 Nginx infrastructure 2022-11-20 15:16:47 +08:00
tolik b0931dddb3 Fix multiple instances hang issue 2022-11-20 13:41:56 +08:00
Olu Amey a51a8c4c22 add www api project 2022-11-17 20:35:06 -05:00
tolik 0b98470020 Docker build fix 2022-11-13 13:59:38 +08:00
ameye 883913b92d GELF infrastructure 2022-11-13 00:16:43 -05:00
ameye f4af8e4a89 Logger config 2022-11-12 18:36:56 -05:00
ameye b66203256b fix 2022-11-12 14:47:40 -05:00
ameye 301d6f373b fix 2022-11-11 21:52:41 -05:00
ameye 8ff840cad2 fix 2022-11-11 21:27:45 -05:00
ameye fdbc141722 Read configuration 2022-11-06 17:48:38 -05:00
ameye b0366304a1 fix 2022-11-05 20:20:39 -04:00
ameye 6a5d67f537 fix 2022-11-05 20:20:14 -04:00
ameye 7284c1d318 fix 2022-11-05 09:38:33 -04:00
ameye 7abf541bce fix 2022-11-05 09:37:57 -04:00
ameye 48f30e9dfe fix 2022-10-29 15:39:15 -04:00
ameye 35a8ed1e0d fix 2022-10-29 14:26:11 -04:00
ameye 4e71984ca2 fix 2022-10-29 14:11:21 -04:00
ameye f32fcf808e Logger 2022-10-27 23:29:52 -04:00
tolik c285033194 Merge branch 'master' of ssh://gitlab.chiefsoft.net:10221/WrenchBoard/WrenchBoradWeb 2022-10-23 09:30:35 +08:00
tolik b59cc6dbfa FCGI interface SAMPLE 2022-10-23 09:29:33 +08:00
Olusesan Ameye e94a351fd2 Fix backend model wrapper 2022-10-23 00:10:07 +00:00
Olusesan Ameye 294230f850 Use writable path for logs, cache and session 2022-10-23 00:09:44 +00:00
Olusesan Ameye 64d482bcf5 Ignore writable directory 2022-10-23 00:03:17 +00:00
Olusesan Ameye 4c09a25d72 Writable subdirectories 2022-10-22 23:33:36 +00:00
Olusesan Ameye 03a71f7d67 writable directory 2022-10-22 23:30:01 +00:00
Olusesan Ameye ffbe8c5b1a Remove GLOBALS dump 2022-10-22 23:17:52 +00:00
Olusesan Ameye 97e33ebadb Fixed cfg crash 2022-10-22 03:30:51 +00:00
tolik c30a776ea5 API debugging wrappers 2022-10-22 09:02:49 +08:00
ChiefSoft works 24952769d4 Merge branch 'master' of ssh://gitlab.chiefsoft.net/WrenchBoard/WrenchBoradWeb 2022-10-22 00:17:56 +00:00
ChiefSoft works 8a06b50f2b Run container in priviledged mode to allow debugging 2022-10-22 00:16:30 +00:00
ameye 40a7015b25 fix 2022-10-20 19:39:46 -04:00
ameye 7eec9bf71a fix 2022-10-20 19:17:49 -04:00
ameye 6c665e538f fix 2022-10-20 18:36:21 -04:00
ameye da661f15eb fix 2022-10-12 08:09:52 -04:00
ameye 7e14b4919b fix 2022-10-11 08:08:53 -04:00
ameye 2edcd3207a fix 2022-10-11 07:43:33 -04:00
ameye 188f4625e0 fix 2022-10-10 19:30:48 -04:00
ameye 0a4f3c3245 fix 2022-10-08 18:40:22 -04:00
ameye cee7c38383 fix 2022-10-06 20:28:13 -04:00
ameye fca044e247 fix 2022-10-06 20:28:10 -04:00
ameye 1dbd9dd109 fix 2022-10-06 18:30:12 -04:00
ameye 4f4d5f2339 fix 2022-10-01 10:30:17 -04:00
ameye b609dd8b7a fix 2022-09-27 07:46:33 -04:00
ameye bbe90b327c fix 2022-09-22 21:47:51 -04:00
ameye 90be9fd8b9 fix 2022-09-22 21:09:31 -04:00
ameye 75a5004fce fix 2022-09-22 21:09:26 -04:00
ameye 019c41a954 fix 2022-09-22 20:08:59 -04:00
ameye 27238f212b fix 2022-09-22 20:08:55 -04:00
ameye d16da0b2e4 fix 2022-09-19 08:03:33 -04:00
ameye 86399b3974 fix 2022-09-19 08:03:29 -04:00
ameye 4ec6571a76 fix 2022-09-18 22:08:04 -04:00
ameye a145807138 fix 2022-09-18 21:50:21 -04:00
ameye d60a00855c fix 2022-09-18 21:38:07 -04:00
ameye f04379495b fix 2022-09-18 21:00:31 -04:00
ameye decb2a784e fix 2022-09-18 20:31:24 -04:00
ameye 8f6f743bd4 fix 2022-09-18 17:40:33 -04:00
ameye 9d66d36948 fix 2022-09-18 15:06:45 -04:00
ameye 1504235972 fix 2022-09-17 09:40:27 -04:00
ameye 22375515f2 fix 2022-09-17 09:28:13 -04:00
ameye 9f2df5ae75 fix 2022-09-17 01:34:00 -04:00
ameye 5fb8dc5719 fix 2022-09-17 00:05:15 -04:00
ameye b8fcb77bb9 fix 2022-09-16 23:53:32 -04:00
ameye 4b3c168cf5 fix 2022-09-16 23:33:42 -04:00
ameye 2508bec2e9 fix 2022-09-16 23:08:56 -04:00
ameye a10e37658f fix 2022-09-16 22:38:31 -04:00
ameye c5c4c68461 fix 2022-09-16 22:13:37 -04:00
ameye 555f8de5a8 fix 2022-09-16 22:02:50 -04:00
ameye 2111628506 fix 2022-09-10 09:27:51 -04:00
ameye bab144fd48 OneSignal config 2022-09-09 21:48:58 -04:00
ameye bece9b4a7e OneSignal worker fix 2022-09-09 21:30:45 -04:00
ameye 8bb79df01b OneSignal (oameye) 2022-09-09 21:25:35 -04:00
ameye 8d84bafa22 fix 2022-09-09 20:59:06 -04:00
ameye 159fd25d16 Visual editor & append to message accordion 2022-09-09 19:31:33 -04:00
ameye 6b362482e4 Fix AJAX message sending 2022-09-09 18:26:19 -04:00
ameye c71397903b fix 2022-09-04 19:14:40 -04:00
ameye f45716b586 Merge branch 'master' of ssh://gitlab.chiefsoft.net:10222/WrenchBoard/WrenchBoradWeb 2022-09-04 18:31:30 -04:00
ameye d7419ca71a fix 2022-09-04 15:29:51 -04:00
ameye 2c9c14ad0c fix 2022-09-04 15:29:48 -04:00
ChiefSoft works b73fdd07f7 environment fixed 2022-09-04 01:05:37 +00:00
ChiefSoft works ed1b8e2ce1 Environment and health/status fix 2022-09-03 23:17:41 +00:00
ameye 46985d09b3 fix 2022-08-31 21:06:38 -04:00
ameye 9ec5e63c07 fix 2022-08-31 18:25:59 -04:00
ameye a6059857be fix 2022-08-31 18:25:55 -04:00
ameye 30f6784ab7 fix 2022-08-29 06:53:39 -04:00
ameye e0d7283c57 fix 2022-08-28 20:04:27 -04:00
ameye 0631d432f6 fix 2022-08-28 19:10:07 -04:00
ameye 9cc6d49f85 fix 2022-08-28 19:02:25 -04:00
ameye a094ca6d54 fix 2022-08-28 19:02:21 -04:00
ameye 43c192aab0 fix 2022-08-21 20:21:06 -04:00
ameye ae25b88a68 fix 2022-08-21 20:20:54 -04:00
ameye 99223bab2d fix 2022-08-21 16:46:07 -04:00
ameye 60e556a09c fix 2022-08-21 16:46:04 -04:00
ameye 3ad64f309b fix 2022-08-21 12:54:37 -04:00
ameye a5cbc31d27 fix 2022-08-20 21:01:07 -04:00
ameye 6eb90c9e22 fix 2022-08-20 20:48:11 -04:00
ameye a98c7095b3 fix 2022-08-20 18:09:49 -04:00
ameye 884aacb903 fix 2022-08-20 18:09:44 -04:00
ameye 26845635b2 fix 2022-08-20 16:55:44 -04:00
ameye 125cd17ee2 fix 2022-08-20 15:53:42 -04:00
ameye 8f048c56e1 fix 2022-08-19 06:29:29 -04:00
ameye 68cbd04b02 fix 2022-08-17 10:08:23 -04:00
ameye 593ee40a6e Editor 2022-08-14 03:41:23 -04:00
ameye f2240cd6e7 New assets/plugins 2022-08-14 03:40:48 -04:00
ameye b2155d64ed fix 2022-08-13 20:26:23 -04:00
ameye 7914a73df0 fix 2022-08-13 10:47:25 -04:00
ameye 382e4f7259 fix 2022-08-13 10:47:21 -04:00
ameye 0ade35717c fix 2022-08-13 10:00:01 -04:00
ameye 6abcd937c2 fix 2022-08-12 21:37:05 -04:00
ameye ea4f941637 fix 2022-08-08 07:32:09 -04:00
ameye 7aa911b1f7 fix 2022-08-08 07:32:05 -04:00
ameye 72dc1b0f12 fix 2022-08-07 15:08:18 -04:00
ameye 9dd76a2a3a fix 2022-08-07 15:08:12 -04:00
ameye 2025955687 fix 2022-08-07 14:22:14 -04:00
ameye a57db5292a fix 2022-08-07 14:22:10 -04:00
ameye c56c08f311 fix 2022-08-07 13:34:07 -04:00
ameye ad29f634fa fix 2022-08-07 13:34:04 -04:00
ameye 3f081bb310 fix 2022-08-07 07:57:27 -04:00
ameye 91b330ae8b fix 2022-08-07 07:57:23 -04:00
ameye 640514e2ec Removed initial animation & centered progress label 2022-08-07 00:20:52 -04:00
ameye 4e136c1186 Grphical progressbar 2022-08-06 23:49:49 -04:00
ameye 3a9b3135b3 fix 2022-08-06 23:21:37 -04:00
ameye 1ba94a412b Upload file size limit configuration & handling 2022-08-06 22:46:32 -04:00
ameye 1600fd4815 fix 2022-08-06 22:23:51 -04:00
ameye 1168903d26 fix 2022-08-06 21:36:02 -04:00
ameye ed1dc93878 fix 2022-08-06 17:24:51 -04:00
ameye 785ce19dee fix 2022-08-06 17:24:48 -04:00
ameye 7f32e70b9b fix 2022-08-06 16:07:10 -04:00
ameye 0074b8a998 fix 2022-08-06 12:02:52 -04:00
ameye e9b0bbc899 fix 2022-08-06 08:51:32 -04:00
ameye 082253aa68 fix 2022-08-03 12:58:47 -04:00
ameye 1d2e36c6f8 Fix bug: cannot upload single file 2022-08-03 12:13:48 -04:00
ameye 23e27d2f28 fix 2022-07-31 15:35:46 -04:00
ameye 87fdd90678 fix 2022-07-31 15:30:33 -04:00
ameye b6b96579fc fix 2022-07-31 15:20:08 -04:00
ameye 7b846216dd fix 2022-07-31 13:30:16 -04:00
ameye 25300e1234 fix 2022-07-31 13:12:26 -04:00
ameye 7ffb9e67b7 Merge branch 'master' of ssh://gitlab.chiefsoft.net:10222/WrenchBoard/WrenchBoradWeb 2022-07-31 13:03:10 -04:00
ameye efd5647d64 fix 2022-07-31 13:01:42 -04:00
ChiefSoft works 8e09298ad1 Docker backend infrastructure 2022-07-31 14:56:41 +00:00
ChiefSoft works ef29296471 Make the extension build on Debian Linux 2022-07-31 14:55:36 +00:00
ChiefSoft works 4adcf27880 Merge branch 'master' of ssh://gitlab.chiefsoft.net/WrenchBoard/WrenchBoradWeb 2022-07-31 14:54:35 +00:00
ChiefSoft works 5959d57ac3 Docker base images for PHP-FPM 2022-07-31 14:54:16 +00:00
ameye 3954822c89 AJAX file upload and size limit 2022-07-31 09:17:04 -04:00
ameye 8f9bcaa06a Show file name, size and type to upload 2022-07-31 02:19:13 -04:00
ameye 8e52e36d3f fix 2022-07-31 00:10:22 -04:00
ameye 8da6cd2624 fix 2022-07-31 00:01:45 -04:00
ameye 00ea96c103 fix 2022-07-30 22:50:48 -04:00
ameye 7b8d0e2f69 fix 2022-07-30 22:46:05 -04:00
ameye 37e0433489 fix 2022-07-30 21:17:40 -04:00
ameye 2147171f9e fix 2022-07-30 12:56:05 -04:00
ameye c3ce8490d7 fix 2022-07-30 12:18:06 -04:00
ameye c85d578b46 fix 2022-07-30 11:07:22 -04:00
ameye efc3692e1d fix 2022-07-30 08:50:58 -04:00
ameye 130c8f8b9c fix 2022-07-29 16:24:27 -04:00
ameye 58dad40e54 fix 2022-07-29 16:24:24 -04:00
ameye d4ddbd1eda fix 2022-07-29 11:45:47 -04:00
ameye aa10f50813 fix 2022-07-29 11:44:47 -04:00
ameye ab4f9dc58d fix 2022-07-29 11:40:42 -04:00
ameye c042097dd1 fix 2022-07-24 21:16:37 -04:00
ameye 777f024021 fix 2022-07-24 19:00:44 -04:00
ameye 074379dff1 Mark WrenchRefundoffer function 2022-07-24 01:06:25 -04:00
ameye 5e9c1bc3bd Fix label 2022-07-24 01:05:25 -04:00
ameye 1f4933c091 Up to date code 2022-07-24 01:04:50 -04:00
ameye fe6f130cfa Fix out aray 2022-07-23 23:47:34 -04:00
ameye f34632e8db Fix loading extension in console 2022-07-23 23:47:15 -04:00
ameye 27f9ecf2c4 fix 2022-07-23 14:34:03 -04:00
ameye 41283208f8 fix 2022-07-23 13:04:52 -04:00
ameye 49c5e94dd5 fix 2022-07-23 12:56:36 -04:00
ameye 24c39db3e8 fix 2022-07-23 10:03:59 -04:00
ameye c4b4ca7f9d fix 2022-07-22 20:08:48 -04:00
ameye ffc45b7d15 fix 2022-07-20 21:04:36 -04:00
ameye f42a19c1c0 fix 2022-07-18 18:51:55 -04:00
ameye 940c742ff4 fix 2022-07-18 18:51:34 -04:00
ameye 01c0d4a417 fix 2022-07-18 18:36:28 -04:00
ameye 61bb2a5800 fix 2022-07-18 13:05:38 -04:00
ameye da16ee8f06 fix 2022-07-18 11:48:07 -04:00
ameye 7f4dbca484 fix 2022-07-18 11:48:03 -04:00
ameye 515a5fdd9f fix 2022-07-17 21:24:06 -04:00
ameye 353d33ac6f fix 2022-07-17 18:25:06 -04:00
ameye d11d99749c fix 2022-07-17 18:17:23 -04:00
ameye b237cc1933 fix 2022-07-17 18:14:27 -04:00
ameye a76977a44a fix 2022-07-17 17:05:16 -04:00
ameye 454900f85b fix 2022-07-17 16:59:46 -04:00
ameye a2f8902226 fix 2022-07-17 16:16:40 -04:00
ameye 7b82194cfd fix 2022-07-17 15:52:57 -04:00
ameye 2d01bbccad fix 2022-07-17 15:16:12 -04:00
ameye d51d78eb57 fix 2022-07-16 21:18:08 -04:00
ameye b6fdad88c4 fix 2022-07-16 21:11:11 -04:00
ameye 4b99c679aa fix 2022-07-16 20:52:54 -04:00
ameye 1a6bade648 fix 2022-07-16 19:22:20 -04:00
ameye 2f6050fb08 fix 2022-07-16 18:31:36 -04:00
ameye 8b03f5b4aa fix 2022-07-13 18:31:13 -04:00
ameye ab9dbfad9f fix 2022-07-09 19:22:51 -04:00
ameye 4c122e73de fix 2022-07-08 22:52:06 -04:00
ameye bdbf938cf8 fix 2022-07-08 22:52:02 -04:00
ameye c7c6dbe4c8 fix 2022-07-04 13:52:55 -04:00
ameye fb6644d719 fix 2022-07-04 13:07:40 -04:00
ameye d1a443ff42 fix 2022-07-04 13:07:37 -04:00
ameye a58f91952e fix 2022-07-02 03:19:52 -04:00
ameye 666d63a8a2 fix 2022-07-02 02:40:07 -04:00
ameye 0548daa058 fix 2022-06-26 19:19:39 -04:00
ameye f10243b1a6 fix 2022-06-26 13:59:09 -04:00
ameye dc3ca28446 fix 2022-06-26 07:54:40 -04:00
ameye 36b4b365ea fix 2022-06-26 07:54:36 -04:00
ameye 3d95687b6d Ignore file that do not neet to be in git 2022-06-25 23:01:46 -04:00
ameye 6497c6a4a9 we should not list directory 2022-06-25 22:57:21 -04:00
ameye a4274c5a5a Removed TEST folder from repository 2022-06-25 21:55:47 -04:00
ameye 7ae0777c13 fix 2022-06-21 07:14:46 -04:00
ameye 01cf6d6fbe fix 2022-06-20 21:22:57 -04:00
ameye 939fad23c0 fix 2022-06-20 14:07:19 -04:00
ameye 4a87b9f309 fix 2022-06-20 11:30:32 -04:00
ameye 1f7482e99b fix 2022-06-20 11:30:27 -04:00
ameye 062e30f89b fix 2022-06-20 10:36:08 -04:00
ameye b4570e3afc fix 2022-06-20 10:04:53 -04:00
ameye a57b701fd9 fix 2022-06-20 10:04:49 -04:00
ameye 61e57863c5 fix 2022-06-14 21:10:47 -04:00
ameye fd50c9b8c0 fix 2022-06-14 18:39:03 -04:00
ameye 387198f669 fix 2022-06-14 13:56:13 -04:00
ameye f41740ff78 fix 2022-06-14 11:38:44 -04:00
ameye f58c2a8c57 fix 2022-06-14 07:21:52 -04:00
ameye 3b21cee578 fix 2022-06-13 21:06:14 -04:00
ameye d776643f7e Added hCaptcha 2022-06-11 23:36:12 -04:00
ameye 9e8ec9c37e fix 2022-06-07 16:50:52 -04:00
ameye 2bb996baff fix 2022-06-06 17:09:33 -04:00
ameye 877dc5ba40 fix 2022-06-05 14:51:18 -04:00
ameye 8c2c0e56a1 fix 2022-06-04 22:20:25 -04:00
ameye c6bd157dcf fix 2022-06-04 21:14:13 -04:00
ameye da914bfd93 fix 2022-06-04 18:05:46 -04:00
ameye 6bc06fef8b fix 2022-06-04 17:50:57 -04:00
ameye 35acf363aa fix 2022-06-03 21:52:57 -04:00
ameye 84f3325c46 missing 2022-06-02 23:19:45 -04:00
ameye 99794baa11 fix 2022-06-02 22:33:30 -04:00
ameye 24baeb5449 fix 2022-06-02 22:01:46 -04:00
ameye ab34dd6b82 fix 2022-06-02 21:34:58 -04:00
ameye ebe13ef30b fix 2022-06-02 21:15:27 -04:00
ameye 07c3425046 fix 2022-06-01 21:11:45 -04:00
ameye 268e1b6a54 fix 2022-06-01 20:58:05 -04:00
ameye a9380d73e9 fix 2022-06-01 20:57:49 -04:00
ameye 9ea25c81c4 Backend support for Apple login 2022-06-01 11:36:29 -04:00
ameye 019e650090 Sigin with Apple 2022-06-01 09:14:47 -04:00
ameye 320cbb11ee Added Firebase JWT and secret generation 2022-06-01 07:45:19 -04:00
ameye 6949150647 fix 2022-05-31 19:47:51 -04:00
ameye 8f1507548e fix 2022-05-31 19:27:24 -04:00
ameye a5e5bafb40 fix 2022-05-31 18:56:33 -04:00
ameye b3f7f13d6b fix 2022-05-31 18:55:14 -04:00
ameye 97770ffe95 fix 2022-05-31 18:02:24 -04:00
ameye e9e1a5fe71 fix 2022-05-31 18:00:41 -04:00
ameye a4ba2da5ed fix 2022-05-31 17:28:07 -04:00
ameye de6288fc3a fix 2022-05-31 17:27:58 -04:00
ameye 5e5f643d9f fix 2022-05-31 17:27:47 -04:00
ameye cd8afaf1b1 fix 2022-05-30 08:59:05 -04:00
ameye 30f19d771d fix 2022-05-22 11:44:05 -04:00
ameye 1c5b0a24c7 fix 2022-05-21 17:10:47 -04:00
ameye b866d2a1be fix 2022-05-21 13:57:25 -04:00
ameye 3b5eac3d52 fix 2022-05-21 13:33:58 -04:00
ameye b6f4adf046 fix 2022-05-21 13:18:45 -04:00
ameye 39ec57c10c fix 2022-05-21 12:58:19 -04:00
ameye c14ab2a76b fix 2022-05-21 12:20:45 -04:00
ameye edd7712ea7 fix 2022-05-21 11:55:31 -04:00
ameye fe17055c90 fix 2022-05-21 11:36:05 -04:00
ameye 1957c7f1d9 fix 2022-05-21 10:40:42 -04:00
ameye 0a9898a69d fix 2022-05-21 10:15:23 -04:00
ameye 186ee393a2 fix 2022-05-14 20:28:30 -04:00
ameye ee04eaa22c fix 2022-05-14 20:28:23 -04:00
ameye 58b12ee874 fix 2022-05-14 13:56:06 -04:00
ameye 28cca364a8 fix 2022-05-14 12:35:25 -04:00
ameye 2dfbb4ea88 fix 2022-05-13 23:57:42 -04:00
ameye 95b7128d91 fix 2022-05-13 23:57:38 -04:00
ameye aa0a9789fa fix 2022-05-12 22:40:56 -04:00
ameye ecbd702ec5 fix 2022-05-12 22:40:49 -04:00
ameye 40a92d844a fix 2022-05-12 21:51:17 -04:00
ameye e6f8ba1d0d fix 2022-05-12 21:48:15 -04:00
ameye c414318ca8 fix 2022-05-12 21:28:21 -04:00
ameye 64b74940b8 fix 2022-05-12 21:15:23 -04:00
ameye 699c789714 fix 2022-05-12 19:21:31 -04:00
ameye 876c4e29e2 Moved flutterwave-transfer-micro to another repository 2022-05-07 23:28:14 -04:00
ameye 460c4ac9f7 fix 2022-05-07 17:13:20 -04:00
ameye 68bbfe9514 fix 2022-05-07 16:56:21 -04:00
ameye 4a2f4b8c70 fix 2022-05-07 16:56:11 -04:00
ameye 0de7c858a3 fix 2022-05-07 16:33:51 -04:00
ameye f5ea90faa0 fix 2022-05-07 16:32:36 -04:00
ameye 3b77436210 fix 2022-05-07 16:13:17 -04:00
ameye f2c56962a7 fix 2022-05-07 12:42:16 -04:00
ameye 766f034ac4 fix 2022-05-07 12:10:54 -04:00
ameye 966c611e0e fix 2022-05-07 10:33:28 -04:00
ameye a7a4234f79 fix 2022-05-07 10:33:17 -04:00
ameye d2442a256e fix 2022-04-24 14:44:55 -04:00
ameye 31bdb511bb fix 2022-04-24 14:13:31 -04:00
ameye a542184759 fix 2022-04-24 13:55:47 -04:00
ameye f97a7c54ab fix 2022-04-24 13:24:12 -04:00
ameye 886379b0f7 fix 2022-04-24 10:53:27 -04:00
ameye a1eac4a91f fix 2022-04-24 10:02:49 -04:00
ameye 95bc611309 fix 2022-04-24 09:17:10 -04:00
ameye f6288105fb fix 2022-04-23 23:19:32 -04:00
ameye 5692d9f3b2 fix 2022-04-23 22:34:57 -04:00
ameye 984df3184f fix 2022-04-23 22:34:31 -04:00
ameye 8cb2a9d918 fix 2022-04-23 22:34:18 -04:00
ameye 88dd88241d fix 2022-04-23 11:39:19 -04:00
ameye e0edf1932d fix 2022-04-23 11:38:57 -04:00
ameye ebcb7aef1e fix 2022-04-21 19:19:05 -04:00
ameye 432028c088 fix 2022-04-21 19:18:44 -04:00
ameye 7d2373a080 fix 2022-04-21 18:58:31 -04:00
ameye 2e61b070ba Update composer to 2.x 2022-04-16 22:45:25 -04:00
ameye a4aee540a6 fix 2022-04-11 20:08:20 -04:00
ameye 51812950e3 fix 2022-04-10 19:04:20 -04:00
ameye 577995cf03 fix 2022-04-10 19:04:17 -04:00
ameye 6596089608 Fix erorrs for missing data 2022-04-10 01:40:02 -04:00
ameye 5f5abd0b3e fix 2022-04-09 13:38:05 -04:00
ameye 55c06162ef fix 2022-04-09 13:38:01 -04:00
ameye 23c4762347 fix 2022-04-09 12:53:16 -04:00
ameye 7e220e3b05 fix 2022-04-09 10:24:04 -04:00
ameye bc90fb9bb2 fix 2022-04-09 00:11:52 -04:00
ameye 62c4444217 fix 2022-04-07 01:26:31 -04:00
ameye a0cf3feecc fix 2022-04-07 01:26:25 -04:00
ameye aea5fd9f6b fix 2022-04-06 23:14:44 -04:00
ameye 50b480d963 Temporary hide Google login option 2022-04-04 01:17:54 -04:00
ameye 59f0e75842 Switch Google login to native client 2022-04-04 01:03:39 -04:00
ameye 769e1bc7b1 Moved HybridAuth to composer 2022-04-04 00:03:03 -04:00
ameye 99d7b89ebd fix 2022-04-03 16:36:08 -04:00
ameye 9163c8ad84 fix 2022-04-03 15:49:38 -04:00
ameye c87494b40e fix 2022-04-03 15:42:25 -04:00
ameye fb2034ab97 fix 2022-04-03 14:19:34 -04:00
ameye 266b9ddad8 fix 2022-04-03 14:10:01 -04:00
ameye a9b09dc416 fix 2022-03-26 19:10:35 -04:00
ameye de37aea2c4 fix 2022-03-26 19:10:30 -04:00
ameye 92d89d90a3 fix 2022-03-25 20:35:16 -04:00
ameye 31d98bddfb fix 2022-03-24 22:16:27 -04:00
ameye e25017a25f fix 2022-03-24 21:40:48 -04:00
ameye 2e63218e82 fix 2022-03-24 21:23:01 -04:00
ameye 928d064fbe fix 2022-03-24 20:54:34 -04:00
ameye f62840a450 fix 2022-03-20 20:11:29 -04:00
ameye 7865c34b7d fix 2022-03-19 12:31:17 -04:00
ameye 4aa313402a fix 2022-03-19 12:10:26 -04:00
ameye e22dc706dc fix 2022-03-19 11:53:50 -04:00
ameye 0ba0794197 fix 2022-03-19 11:36:43 -04:00
ameye b67f736f04 fix 2022-03-19 11:05:21 -04:00
ameye 79bb8ed05d fix 2022-03-19 11:05:18 -04:00
ameye db39cea49b fix 2022-03-12 15:09:14 -05:00
ameye 41fe987f5d fix 2022-03-12 11:19:32 -05:00
ameye f391716de4 fix 2022-03-11 22:48:43 -05:00
ameye 7f0aff735f fix 2022-03-11 22:48:39 -05:00
ameye f08abbe9f6 fix 2022-03-11 00:29:49 -05:00
ameye 74f3b1d282 fix 2022-03-10 22:22:54 -05:00
ameye 346073b544 fix 2022-03-10 12:34:30 -05:00
ameye 81f0c4c233 fix 2022-03-09 21:07:59 -05:00
ameye 626f381c1b fix 2022-03-09 21:07:54 -05:00
ameye 76024459a9 fix 2022-03-08 08:12:55 -05:00
ameye aea41d6ac5 fix 2022-03-07 19:24:52 -05:00
ameye 92af9cdd81 fix 2022-03-07 18:34:01 -05:00
ameye b9de6b4a98 fix 2022-03-07 14:00:36 -05:00
ameye b0747071e9 fix 2022-03-07 14:00:31 -05:00
ameye f64576f3e8 fix 2022-03-03 23:25:53 -05:00
ameye 9009ec13fb fix 2022-03-02 01:58:23 -05:00
ameye dc77c56b43 fix 2022-03-02 01:58:19 -05:00
ameye a3bd756566 fix 2022-03-02 01:30:33 -05:00
ameye c54974811c fix 2022-03-01 13:35:32 -05:00
ameye 3ca0ce7600 fix 2022-02-28 22:56:08 -05:00
ameye d323cc274b fix 2022-02-28 20:00:43 -05:00
ameye 49e0c1191f fix 2022-02-28 19:31:37 -05:00
ameye 862d129d00 fix 2022-02-26 17:01:15 -05:00
ameye 615f09399d fix 2022-02-22 17:14:21 -05:00
ameye 0c400e3918 fix 2022-02-22 16:22:01 -05:00
ameye f2e9e1550e fix 2022-02-22 15:44:56 -05:00
ameye 18c2b8668c fix 2022-02-20 17:58:29 -05:00
ameye 3c31423bb1 fix 2022-02-20 00:28:48 -05:00
ameye e27259dca9 fix 2022-02-19 23:59:57 -05:00
ameye b949c910ea fix 2022-02-19 23:45:05 -05:00
ameye 944ec49640 fix 2022-02-19 23:11:11 -05:00
ameye ae98daa2ec fix 2022-02-19 22:58:46 -05:00
ameye 902e0031d4 fix 2022-02-19 22:58:32 -05:00
ameye 34406d81fa fix 2022-02-19 18:41:09 -05:00
ameye 7e7080f23c fix 2022-02-19 16:58:54 -05:00
ameye 10917727a8 www 2022-02-19 13:14:41 -05:00
ameye 4d4c75aa48 www 2022-02-19 12:47:31 -05:00
ameye cf8c2131bd www 2022-02-19 10:08:54 -05:00
ameye dff9b496cf www 2022-02-19 08:35:09 -05:00
ameye 961b003078 www 2022-02-19 00:09:18 -05:00
ameye 44e2295bb7 www 2022-02-18 23:08:48 -05:00
ameye cf2e761c5a fix 2022-02-18 19:55:18 -05:00
ameye c2d4a49eb2 fix 2022-02-18 19:55:12 -05:00
ameye 1b025a1563 fix 2022-02-18 18:30:32 -05:00
ameye 83a246ee6e fix 2022-02-18 15:52:41 -05:00
ameye 65e7601bda fix 2022-02-18 00:51:47 -05:00
ameye ee4b81e348 fix 2022-02-18 00:17:29 -05:00
ameye d88c823b9f fix 2022-02-14 19:52:29 -05:00
ameye 7d7f5c00dc fix 2022-02-14 19:46:59 -05:00
ameye 31ae9aa725 fix 2022-02-14 19:34:02 -05:00
ameye e7f26e9a39 fix 2022-02-14 19:33:58 -05:00
ameye 999520c31f fix 2022-02-14 18:37:20 -05:00
ameye 285a4c2cfa fix 2022-02-14 18:29:18 -05:00
ameye 45193b66b8 Merge branch 'master' of ssh://gitlab.chiefsoft.net:10222/WrenchBoard/WrenchBoradWeb 2022-02-14 10:23:55 -05:00
ameye 8a9df7b1df fix 2022-02-14 01:33:06 -05:00
ameye b992d1f9b4 fix 2022-02-14 01:21:46 -05:00
ameye 2261ab9d72 fix 2022-02-13 11:35:02 -05:00
ChiefSoft works 7447f7d96e Fix invalid reference format 2022-02-13 05:16:08 +00:00
ChiefSoft works 0cc56dd4df Force https for docker registry url & fix port for flutterwave transfer micro 2022-02-13 04:27:02 +00:00
ameye dabec5c244 fix 2022-02-07 09:56:26 -05:00
ameye efc87db1ca Email boundary workaround 2022-02-05 23:33:32 -05:00
ameye ad56540080 fix 2022-02-05 13:02:33 -05:00
ameye 6d8cdc01ee fix 2022-02-05 11:47:38 -05:00
ameye 6c40d4f22e fix 2022-02-04 23:32:33 -05:00
ameye ef45fd4b6b fix 2022-02-04 21:13:36 -05:00
ameye 76983004a6 ix 2022-02-04 20:44:55 -05:00
ameye f3c2c37326 fix 2022-02-03 20:17:58 -05:00
ameye 54296bf7d6 fix 2022-02-03 19:47:27 -05:00
ameye e122fb93fc fix 2022-02-03 19:29:27 -05:00
ameye cff0929205 fix 2022-02-03 19:22:19 -05:00
ameye 8b8eaf88f9 fix 2022-02-03 19:08:43 -05:00
ameye 46ed530ec1 fix 2022-02-03 12:46:41 -05:00
ameye 2b38b02530 fix 2022-02-03 12:06:19 -05:00
ameye 90ee3dd46f Merge branch 'master' of ssh://gitlab.chiefsoft.net:10222/WrenchBoard/WrenchBoradWeb 2022-02-03 10:37:48 -05:00
ameye f1e5d7eec7 fix 2022-02-02 22:13:20 -05:00
ameye 0cd1f321f9 fix 2022-02-02 21:00:30 -05:00
jenkins 6956c7f409 Remove extra hots 2022-01-30 02:47:32 -05:00
jenkins a456043ced Added docker-compose configuration 2022-01-30 02:43:39 -05:00
ameye 1edcd3ea58 fix 2022-01-21 21:09:48 -05:00
ameye 80d5044534 start job api expire data 2022-01-01 13:57:26 -05:00
ameye f8b262ae54 start job api expire data 2022-01-01 13:57:20 -05:00
ameye 6cce6a0a45 Swagger interface added 2021-12-19 00:37:58 -05:00
5241 changed files with 801224 additions and 66026 deletions
+21
View File
@@ -0,0 +1,21 @@
PHP_UID=1000
PHP_GID=1000
PHP_HOME=/opt/mainsite/wrenchboard/www
PHP_USER=php-fpm
PHP_INI_SCAN_DIR=/cfgs:/usr/local/etc/php/conf.d
PHP_INI_PATH=/cfgs/php.ini
PHP_POOL_PATH=/cfgs/*/*-pool.conf
PHP_BOOT_SCRIPTS=/cfgs/start.sh
PHP_CRONTABS_PATH=/cfgs/cron
#PHP_SESSION_HANDLER=redis
#PHP_SESSION_PATH=tcp://redis.host:6379
ENV_ID='DEV20231703-A2'
HOME_PAGE_BACKGROUND='api_bk.jpg'
# private
TEST_EMAIL=support@wrenchboard.com
#NEWRELIC_LICENSE=newrelic_license
#SENDGRID_API_KEY=sendgrid_api_key
+46
View File
@@ -0,0 +1,46 @@
FROM registry.chiefsoft.net/php-fpm:7.4
RUN apt -y update
#RUN apt-cache search gsoap
#RUN find / | grep 'php'
#RUN apt -y install libjson-c4
#RUN apt-cache search libjson
RUN apt -y install libconfig++-dev libconfig++9v5 libconfig-dev libconfig9 libpq-dev libpq5 libjson-c-dev libjson-c5 \
libpcrecpp0v5 unixodbc-dev postgresql-server-dev-13 libgsoap-dev libgsoap-2.8.104
RUN apt -y install rapidjson-dev libboost-all-dev
# RUN apt -y install libconfig++-dev libconfig++9v5 libconfig-dev libconfig9 libpq-dev libpq5 libjson-c-dev libjson-c4 \
# libpcrecpp0v5 unixodbc-dev postgresql-server-dev-12 libgsoap-dev libgsoap-2.8.91
# DEBUG
RUN apt -y install gdb strace vim postgresql-client-13
ARG CACHEBUST=1
ADD wrenchboard/scripts/* /usr/local/bin/
ADD wrenchboard/configs/* /cfgs/
RUN rm -rf /opt/mainsite/wrenchboard
RUN mkdir -p /opt/mainsite/wrenchboard
COPY www/ /opt/mainsite/wrenchboard/www
COPY www-api/ /opt/mainsite/wrenchboard/www-api
ADD wrenchboard/build/* /opt/mainsite/wrenchboard/build/
COPY wrenchboard/email/ /opt/mainsite/wrenchboard/email
ADD wrenchboard/etc/* /opt/mainsite/wrenchboard/etc/
COPY wrenchboard/src/ /opt/mainsite/wrenchboard/src
RUN cd /opt/mainsite/wrenchboard/src && make clean
RUN cd /opt/mainsite/wrenchboard/build && ./configure
RUN cd /opt/mainsite/wrenchboard/src && make
#RUN ls -l /usr/local/lib/php/extensions/no-debug-non-zts-20190902
RUN ln -s /opt/mainsite/wrenchboard/src/modules/wrenchboard_api_root.so /usr/local/lib/php/extensions/no-debug-non-zts-20190902/wrenchboard_api_root.so
RUN touch /opt/mainsite/wrenchboard/logs/wrenchboard_api_root.log
RUN chmod a+w /opt/mainsite/wrenchboard/logs/wrenchboard_api_root.log
RUN echo "extension=wrenchboard_api_root.so" > /usr/local/etc/php/conf.d/docker-php-ext-wrenchboard.ini
+28
View File
@@ -0,0 +1,28 @@
version: "3"
services:
wrenchboard-backend-php74:
image: registry.chiefsoft.net/wrenchboard-backend-php74:latest
build:
context: ./
args:
- CACHEBUST=${CACHEBUST:-1}
dockerfile: Dockerfile
hostname: wrenchboard-backend-php74
container_name: wrenchboard-backend-php74
ports:
- 9999:9000
privileged: true
restart: unless-stopped
environment:
- DOCKER_BUILDKIT=1
volumes:
- ./wrenchboard/configs:/cfgs
- ./www:/app
- ./www:/opt/mainsite/wrenchboard/www
- ./www-api:/opt/mainsite/wrenchboard/www-api
- /etc/wrenchboard:/opt/mainsite/wrenchboard/etc
- ./wrenchboard/email:/opt/mainsite/wrenchboard/email
#- ./wrenchboard/src:/opt/mainsite/wrenchboard/src
- /opt/wrenchboard:/opt/wrenchboard
env_file: .env
+2
View File
@@ -0,0 +1,2 @@
_OLD/
.vscode
+168
View File
@@ -0,0 +1,168 @@
FROM php:5.6-fpm
MAINTAINER Mark Hilton <nerd305@gmail.com>
# Install PHP extensions
RUN DEBIAN_FRONTEND=noninteractive apt-get update -q && \
DEBIAN_FRONTEND=noninteractive apt-get install -y \
nano openssl libldb-dev libtidy-dev libgmp-dev unixODBC-dev \
libicu-dev \
libmcrypt-dev \
libcurl4-openssl-dev \
librabbitmq-dev \
libsodium-dev \
libpq-dev \
libxslt1-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng12-dev \
zlib1g-dev \
libgmp3-dev \
libbz2-dev \
libgmp-dev \
libgmp3-dev
# imagic
RUN apt-get install -y libmagickwand-6.q16-dev --no-install-recommends \
&& ln -s /usr/lib/x86_64-linux-gnu/ImageMagick-6.8.9/bin-Q16/MagickWand-config /usr/bin \
&& pecl install imagick \
&& echo "extension=imagick.so" > /usr/local/etc/php/conf.d/ext-imagick.ini
RUN docker-php-ext-configure xsl \
&& docker-php-ext-configure soap --enable-soap \
&& docker-php-ext-configure intl --enable-intl \
&& docker-php-ext-configure pcntl --enable-pcntl \
&& docker-php-ext-configure bcmath --enable-bcmath \
&& docker-php-ext-configure pdo_mysql --with-pdo-mysql \
&& docker-php-ext-configure mbstring --enable-mbstring \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd \
&& docker-php-ext-install dba ftp calendar ctype dom tokenizer fileinfo gettext posix tidy wddx \
&& docker-php-ext-install exif sockets bz2 zip iconv mcrypt json session \
&& docker-php-ext-install opcache xsl xml xmlreader xmlwriter xmlrpc simplexml \
&& docker-php-ext-install curl bcmath intl pcntl mbstring soap mysqli pdo pdo_mysql \
&& ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h \
&& docker-php-ext-install gmp sysvmsg sysvsem sysvshm \
&& docker-php-ext-enable soap
# && docker-php-ext-configure odbc --with-unixODBC=unixODBC,/usr/ \
# && docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr/ \
# && docker-php-ext-install odbc pdo_odbc \
# && docker-php-ext-enable odbc \
# mhash
RUN apt-get install -y libmhash2 libmhash-dev php5-mhash && \
cd /usr/src/ && \
curl -O -L https://downloads.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz && \
tar xzf mhash-0.9.9.9.tar.gz && \
cd mhash-0.9.9.9 && \
./configure && make && make install && \
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
RUN docker-php-ext-configure hash --with-mhash=/usr/src/mhash-0.9.9.9/include/ && \
docker-php-ext-install hash
# Igbinary module
RUN pecl install igbinary \
&& docker-php-ext-enable igbinary
RUN pecl install -o -f redis && \
docker-php-ext-enable redis
RUN pecl install apcu-4.0.10 && \
docker-php-ext-enable apcu
RUN apt-get install -y libmemcached-dev \
&& pecl install memcache \
&& pecl install memcached-2.2.0 \
&& docker-php-ext-enable memcache memcached
RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -o xcache.tar.gz \
&& mkdir -p xcache \
&& tar -xf xcache.tar.gz -C xcache --strip-components=1 \
&& rm xcache.tar.gz \
&& ( \
cd xcache \
&& phpize \
&& ./configure --enable-xcache \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r xcache \
&& docker-php-ext-enable xcache
# composer
RUN RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer
# install NewRelic agent
RUN echo 'deb http://apt.newrelic.com/debian/ newrelic non-free' | tee /etc/apt/sources.list.d/newrelic.list && \
curl https://download.newrelic.com/548C16BF.gpg | apt-key add - && \
apt-get -y update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install newrelic-php5 newrelic-sysmond && \
export NR_INSTALL_SILENT=1 && newrelic-install install
# Install required libraries
RUN apt-get -y install libfcgi0ldbl git mysql-client cron redis-tools
# install sendgrid mail routing
RUN echo "postfix postfix/mailname string localhost" | debconf-set-selections && \
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections && \
DEBIAN_FRONTEND=noninteractive apt-get install postfix libsasl2-modules -y
# install modman
RUN curl -s -L https://raw.github.com/colinmollenhour/modman/master/modman-installer | bash && \
mv ~/bin/modman /usr/sbin/
# install composer
ENV COMPOSER_HOME /tmp
ENV COMPOSER_VERSION 1.5.2
ENV COMPOSER_ALLOW_SUPERUSER 1
RUN curl -s -f -L -o /tmp/installer.php https://raw.githubusercontent.com/composer/getcomposer.org/da290238de6d63faace0343efbdd5aa9354332c5/web/installer \
&& php -r " \
\$signature = '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410'; \
\$hash = hash('SHA384', file_get_contents('/tmp/installer.php')); \
if (!hash_equals(\$signature, \$hash)) { \
unlink('/tmp/installer.php'); \
echo 'Integrity check failed, installer is either corrupt or worse.' . PHP_EOL; \
exit(1); \
}" \
&& php /tmp/installer.php --no-ansi --install-dir=/usr/bin --filename=composer --version=${COMPOSER_VERSION} \
&& composer --ansi --version --no-interaction \
&& rm -rf /tmp/* /tmp/.htaccess
# install recommended redis extension
RUN cd /usr/src && \
git clone https://github.com/phpredis/phpredis.git && \
cd /usr/src/phpredis && phpize && \
./configure --enable-redis-igbinary && \
make && make install
# install blackfire.io profiler
RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \
&& curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$version \
&& tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp \
&& mv /tmp/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so \
&& printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini
# cache
RUN echo 5
# Install shared PHP code
RUN git clone https://github.com/nrk/predis.git /usr/local/lib/php/predis && \
git clone -b magento https://github.com/markhilton/redis-http-cache.git /usr/local/lib/php/redis-http-cache
# clean up
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY scripts/* /usr/local/bin/
RUN chmod +x /usr/local/bin/*
# Health check
RUN sed -i '/pm.status_path/c\pm.status_path = /status' /usr/local/etc/php-fpm.d/www.conf && \
sed -i '/ping.path/c\ping.path = /health' /usr/local/etc/php-fpm.d/www.conf && \
sed -i '/ping.response/c\;ping.response = OK' /usr/local/etc/php-fpm.d/www.conf
HEALTHCHECK --interval=10s --timeout=5s \
CMD SCRIPT_NAME=/health SCRIPT_FILENAME=/health REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000 || exit 1
View File
View File
+15
View File
@@ -0,0 +1,15 @@
#!/bin/bash
if [ ! "$PHP_CRONTABS_PATH" == "" ]; then
printf "env CRONTABS_PATH: setting up crontabs: ";
for f in ${PHP_CRONTABS_PATH}; do
printf "$f, ";
rm -f /etc/cron.d/${f##*/}
cp $f /etc/cron.d/
chmod 0644 /etc/cron.d/${f##*/}
done
echo
touch /var/log/cron.log
printenv | grep -v "no_proxy" >> /etc/environment
/etc/init.d/cron start > /dev/null
fi
+56
View File
@@ -0,0 +1,56 @@
#!/bin/bash
/usr/local/bin/php -v
### create system user for php pool
if [ ! "$PHP_USER" == "" ] && [ ! "$PHP_UID" == "" ] && [ ! "$PHP_GID" == "" ] && [ ! "$PHP_HOME" == "" ]; then
echo "env PHP_USER: creating new system user: ${PHP_USER} ${PHP_UID}:${PHP_GID} ${PHP_HOME}"
groupadd -f $PHP_USER -g $PHP_GID && \
useradd -d $PHP_HOME -u $PHP_UID -g $PHP_GID -s /bin/false $PHP_USER
fi
### load PHP ini configurations
if [ ! "$PHP_INI_PATH" == "" ]; then
printf "env PHP_INI_PATH: "
for f in ${PHP_INI_PATH}; do
printf "$f, ";
rm -f /usr/local/etc/php/conf.d/${f##*/}
cp $f /usr/local/etc/php/conf.d/
done
echo
fi
### make sure to create clean php-fpm.conf
### to avoid adding multiple times the same lines next
### in case container is restarting
echo "[global]" > /usr/local/etc/php-fpm.conf
echo "include=etc/php-fpm.d/*.conf" >> /usr/local/etc/php-fpm.conf
### load PHP-FPM pool configurations
if [ ! "$PHP_POOL_PATH" == "" ]; then
printf "env PHP_POOL_PATH: "
for f in ${PHP_POOL_PATH}; do
printf "$f, ";
rm -f /usr/local/etc/php-fpm.d/${f##*/}
cp $f /usr/local/etc/php-fpm.d/
done
echo
echo "include=$PHP_POOL_PATH" >> /usr/local/etc/php-fpm.conf
fi
### load boot bash scripts
for f in /usr/local/bin/*.sh; do
/bin/bash -c $f
done
### load bash scripts
if [ ! "$PHP_BOOT_SCRIPTS" == "" ]; then
printf "env PHP_BOOT_SCRIPTS: "
for f in $PHP_BOOT_SCRIPTS; do
printf "${f##*/}, ";
done
echo
for f in $PHP_BOOT_SCRIPTS; do
/bin/bash -c $f
done
fi
+11
View File
@@ -0,0 +1,11 @@
#!/bin/sh
set -e
/usr/local/bin/docker-boot
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- php-fpm "$@"
fi
exec "$@"
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
if [ ! "$NEWRELIC_LICENSE" == "" ] ; then
echo "env NEWRELIC_LICENSE: setting up newrelic license"
sed -i "s/REPLACE_WITH_REAL_KEY/$NEWRELIC_LICENSE/g" /usr/local/etc/php/conf.d/newrelic.ini
nrsysmond-config --set license_key=$NEWRELIC_LICENSE
service newrelic-sysmond start > /dev/null
fi
+24
View File
@@ -0,0 +1,24 @@
#!/bin/bash
if [ -z ${SMTP_LOGIN+x} ] && [ -z ${SMTP_PASSWORD+x} ] && [ ! "$SMTP_LOGIN" == "" ] && [ ! "$SMTP_PASSWORD" == "" ]; then
echo "env SMTP_LOGIN: sendgrid credentials for email routing";
echo "[smtp.sendgrid.net]:2525 ${SMTP_LOGIN}:${SMTP_PASSWORD}" >> /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd.db
rm /etc/postfix/sasl_passwd
### update email relay configuration for SendGrid
sed -i 's/default_transport = error//g' /etc/postfix/main.cf && \
sed -i 's/relay_transport = error//g' /etc/postfix/main.cf && \
sed -i 's/relayhost = //g' /etc/postfix/main.cf && \
echo "relayhost = [smtp.sendgrid.net]:2525" >> /etc/postfix/main.cf && \
echo "smtp_tls_security_level = encrypt" >> /etc/postfix/main.cf && \
echo "smtp_sasl_auth_enable = yes" >> /etc/postfix/main.cf && \
echo "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd" >> /etc/postfix/main.cf && \
echo "header_size_limit = 4096000" >> /etc/postfix/main.cf && \
echo "smtp_sasl_security_options = noanonymous" >> /etc/postfix/main.cf
/etc/init.d/postfix start > /dev/null
fi
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
### update PHP session handler
if [ ! "$PHP_SESSION_HANDLER" == "" ] && [ ! "$PHP_SESSION_PATH" == "" ]; then
echo "env PHP_SESSION_HANDLER: updating php session handler [ $PHP_SESSION_PATH ]"
echo "session.save_handler = $PHP_SESSION_HANDLER" > /usr/local/etc/php/conf.d/zz-session.ini
echo "session.save_path = \"$PHP_SESSION_PATH\"" >> /usr/local/etc/php/conf.d/zz-session.ini
fi
+16
View File
@@ -0,0 +1,16 @@
PHP_UID=1000
PHP_GID=1000
PHP_HOME=/app
PHP_USER=php-fpm
# PHP_INI_SCAN_DIR=/cfgs:/usr/local/etc/php/conf.d
PHP_INI_PATH=/cfgs/php.ini
PHP_POOL_PATH=/cfgs/*/*-pool.conf
PHP_BOOT_SCRIPTS=/cfgs/start.sh
PHP_CRONTABS_PATH=/cfgs/cron
PHP_SESSION_HANDLER=redis
PHP_SESSION_PATH=tcp://redis.host:6379
# private
TEST_EMAIL=name@domain.com
NEWRELIC_LICENSE=newrelic_license
SENDGRID_API_KEY=sendgrid_api_key
+1
View File
@@ -0,0 +1 @@
.env
+239
View File
@@ -0,0 +1,239 @@
FROM php:7.0-fpm
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y --no-install-recommends \
git \
libmemcached-dev \
libz-dev \
libpq-dev \
libjpeg-dev \
libfreetype6-dev \
libssl-dev \
libmcrypt-dev
RUN docker-php-ext-install mcrypt
RUN docker-php-ext-install mysqli pdo_mysql
# install the PHP gd library
RUN docker-php-ext-configure gd \
--enable-gd-native-ttf \
--with-jpeg-dir=/usr/lib \
--with-freetype-dir=/usr/include/freetype2 && \
docker-php-ext-install gd
# install the soap extension
RUN apt-get update -yqq && \
apt-get -y install libxml2-dev && \
docker-php-ext-install soap
# install Php Redis Extension
RUN pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis
# install the mongodb extension
RUN pecl install mongodb && docker-php-ext-enable mongodb
# install bcmath, mbstring and zip extensions
RUN docker-php-ext-install bcmath && \
docker-php-ext-install mbstring && \
docker-php-ext-install zip
# enable Exif PHP extentions requirements
RUN docker-php-ext-install exif
# tokenizer Modifications:
RUN docker-php-ext-install tokenizer
# install intl and requirements
RUN apt-get update -yqq && \
apt-get install -y zlib1g-dev libicu-dev g++ && \
docker-php-ext-configure intl && \
docker-php-ext-install intl
# install the ghostscript extension for PDF editing
RUN apt-get update -yqq \
&& apt-get install -y \
poppler-utils \
ghostscript
# LDAP:
RUN apt-get update -yqq && \
apt-get install -y libldap2-dev && \
docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \
docker-php-ext-install ldap
RUN yes "" | pecl install msgpack-beta \
&& echo "extension=msgpack.so" > /usr/local/etc/php/conf.d/ext-msgpack.ini
# compile igbinary extension
RUN cd /tmp/ && git clone https://github.com/igbinary/igbinary "php-igbinary" && \
cd php-igbinary && \
phpize && \
./configure && \
make && \
make install && \
make clean && \
docker-php-ext-enable igbinary
# curl extension
RUN apt-get install -y curl libcurl4-openssl-dev --no-install-recommends && \
docker-php-ext-install curl
# data structures extension
RUN pecl install ds && \
docker-php-ext-enable ds
# imagick
RUN apt-get update && apt-get install -y libmagickwand-6.q16-dev --no-install-recommends && \
ln -s /usr/lib/x86_64-linux-gnu/ImageMagick-6.8.9/bin-Q16/MagickWand-config /usr/bin && \
pecl install imagick && \
echo "extension=imagick.so" > /usr/local/etc/php/conf.d/ext-imagick.ini
# ssh2 module
RUN apt-get install -y libssh2-1-dev && \
pecl install ssh2-1.0 && \
docker-php-ext-enable ssh2
# php-module: curl dom bz2 gd json mysqli pcntl pdo pdo_mysql phar posix
RUN apt-get install -y libxml2-dev libbz2-dev re2c libpng++-dev \
libjpeg-dev libvpx-dev zlib1g-dev libgd-dev \
libtidy-dev libxslt1-dev libmagic-dev libexif-dev file \
sqlite3 libsqlite3-dev libxslt-dev
RUN export CFLAGS="-I/usr/src/php" && \
docker-php-ext-install xmlreader xmlwriter
RUN docker-php-ext-configure json && \
docker-php-ext-configure session && \
docker-php-ext-configure ctype && \
docker-php-ext-configure tokenizer && \
docker-php-ext-configure simplexml && \
docker-php-ext-configure dom && \
docker-php-ext-configure mbstring && \
docker-php-ext-configure zip && \
docker-php-ext-configure pdo && \
docker-php-ext-configure pdo_sqlite && \
docker-php-ext-configure pdo_mysql && \
docker-php-ext-configure mysqli && \
docker-php-ext-configure iconv && \
docker-php-ext-configure xml && \
docker-php-ext-configure phar
RUN docker-php-ext-install \
dom \
bz2 \
json \
pcntl \
phar \
posix \
simplexml \
soap \
tidy \
xml \
xmlrpc \
xsl \
calendar \
ctype \
fileinfo \
ftp \
sysvmsg \
sysvsem \
sysvshm
# install the php memcache & memcached extension
RUN set -x \
&& apt-get update && apt-get install -y --no-install-recommends unzip libssl-dev libpcre3 libpcre3-dev \
&& cd /tmp \
&& curl -sSL -o php7.zip https://github.com/websupport-sk/pecl-memcache/archive/php7.zip \
&& unzip php7 \
&& cd pecl-memcache-php7 \
&& /usr/local/bin/phpize \
&& ./configure --with-php-config=/usr/local/bin/php-config \
&& make \
&& make install \
&& echo "extension=memcache.so" > /usr/local/etc/php/conf.d/ext-memcache.ini \
&& rm -rf /tmp/pecl-memcache-php7 php7.zip
RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \
&& mkdir -p memcached \
&& tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
&& ( \
cd memcached \
&& phpize \
&& ./configure \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r memcached \
&& rm /tmp/memcached.tar.gz \
&& docker-php-ext-enable memcached
# mhash
RUN apt-get install -y libmhash2 libmhash-dev libc-client-dev libkrb5-dev
RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
&& docker-php-ext-install imap
RUN docker-php-ext-configure hash --with-mhash && \
docker-php-ext-install hash
# Opcache
RUN docker-php-ext-install opcache
# install APCu
RUN pecl install apcu-5.1.8 && \
pecl install apcu_bc-1.0.3 && \
docker-php-ext-enable apcu --ini-name 10-docker-php-ext-apcu.ini && \
docker-php-ext-enable apc --ini-name 20-docker-php-ext-apc.ini
RUN apt-get update -y && apt-get install -y gnupg apt-transport-https locales
# install MSSQL support
# install ODBC driver
#RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
# curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list && \
# export DEBIAN_FRONTEND=noninteractive && apt-get update -y && \
# ACCEPT_EULA=Y apt-get install -y msodbcsql unixodbc-dev
#RUN set -xe \
# && pecl install pdo_sqlsrv \
# && docker-php-ext-enable pdo_sqlsrv \
# && apt-get purge -y unixodbc-dev && apt-get autoremove -y && apt-get clean
# set locale to utf-8
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \
locale-gen
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
#--------------------------------------------------------------------------
# Final Touches
#--------------------------------------------------------------------------
# install required libs for health check
RUN apt-get -y install libfcgi0ldbl nano htop iotop lsof cron mariadb-client redis-tools
# install NewRelic agent
RUN echo 'deb http://apt.newrelic.com/debian/ newrelic non-free' | tee /etc/apt/sources.list.d/newrelic.list && \
curl https://download.newrelic.com/548C16BF.gpg | apt-key add - && \
apt-get -y update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install newrelic-php5 newrelic-sysmond && \
export NR_INSTALL_SILENT=1 && newrelic-install install
# install SendGrid
RUN echo "postfix postfix/mailname string localhost" | debconf-set-selections && \
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections && \
DEBIAN_FRONTEND=noninteractive apt-get install postfix libsasl2-modules -y
# Set default work directory
ADD scripts/* /usr/local/bin/
RUN chmod +x /usr/local/bin/*
# Health check
RUN echo '#!/bin/bash' > /healthcheck && \
echo 'SCRIPT_NAME=/health SCRIPT_FILENAME=/health REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000 || exit 1' >> /healthcheck && \
chmod +x /healthcheck
# Clean up
RUN apt-get remove -y git && apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
WORKDIR /
+1
View File
@@ -0,0 +1 @@
* * * * * root /cfgs/job.sh
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
echo "[ cronjob task ] executed at `date`" > /proc/1/fd/2
File diff suppressed because it is too large Load Diff
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
echo "[ start.sh ] Boot script test..." > /proc/1/fd/2
+423
View File
@@ -0,0 +1,423 @@
; Start a new pool named 'www'.
; the variable $pool can be used in any directive and will be replaced by the
; pool name ('www' here)
[www]
; Per pool prefix
; It only applies on the following directives:
; - 'access.log'
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or NONE) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = www-data
group = www-data
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 9000
; Set listen(2) backlog.
; Default Value: 511 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 511
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user
; mode is set to 0660
;listen.owner = www-data
;listen.group = www-data
;listen.mode = 0660
; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users =
;listen.acl_groups =
; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
; must be separated by a comma. If this value is left blank, connections will be
; accepted from any ip address.
; Default Value: any
;listen.allowed_clients = 127.0.0.1
; Specify the nice(2) priority to apply to the pool processes (only if set)
; The value can vary from -19 (highest priority) to 20 (lower priority)
; Note: - It will only work if the FPM master process is launched as root
; - The pool processes will inherit the master process priority
; unless it specified otherwise
; Default Value: no set
; process.priority = -19
; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user
; or group is differrent than the master process user. It allows to create process
; core dump and ptrace the process for the pool user.
; Default Value: no
; process.dumpable = yes
; Choose how the process manager will control the number of child processes.
; Possible Values:
; static - a fixed number (pm.max_children) of child processes;
; dynamic - the number of child processes are set dynamically based on the
; following directives. With this process management, there will be
; always at least 1 children.
; pm.max_children - the maximum number of children that can
; be alive at the same time.
; pm.start_servers - the number of children created on startup.
; pm.min_spare_servers - the minimum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is less than this
; number then some children will be created.
; pm.max_spare_servers - the maximum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is greater than this
; number then some children will be killed.
; ondemand - no children are created at startup. Children will be forked when
; new requests will connect. The following parameter are used:
; pm.max_children - the maximum number of children that
; can be alive at the same time.
; pm.process_idle_timeout - The number of seconds after which
; an idle process will be killed.
; Note: This value is mandatory.
pm = dynamic
; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI. The below defaults are based on a server without much resources. Don't
; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
; Note: This value is mandatory.
pm.max_children = 5
; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 2
; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 1
; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 3
; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to 'ondemand'
; Default Value: 10s
;pm.process_idle_timeout = 10s;
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500
; The URI to view the FPM status page. If this value is not set, no URI will be
; recognized as a status page. It shows the following informations:
; pool - the name of the pool;
; process manager - static, dynamic or ondemand;
; start time - the date and time FPM has started;
; start since - number of seconds since FPM has started;
; accepted conn - the number of request accepted by the pool;
; listen queue - the number of request in the queue of pending
; connections (see backlog in listen(2));
; max listen queue - the maximum number of requests in the queue
; of pending connections since FPM has started;
; listen queue len - the size of the socket queue of pending connections;
; idle processes - the number of idle processes;
; active processes - the number of active processes;
; total processes - the number of idle + active processes;
; max active processes - the maximum number of active processes since FPM
; has started;
; max children reached - number of times, the process limit has been reached,
; when pm tries to start more children (works only for
; pm 'dynamic' and 'ondemand');
; Value are updated in real time.
; Example output:
; pool: www
; process manager: static
; start time: 01/Jul/2011:17:53:49 +0200
; start since: 62636
; accepted conn: 190460
; listen queue: 0
; max listen queue: 1
; listen queue len: 42
; idle processes: 4
; active processes: 11
; total processes: 15
; max active processes: 12
; max children reached: 0
;
; By default the status page output is formatted as text/plain. Passing either
; 'html', 'xml' or 'json' in the query string will return the corresponding
; output syntax. Example:
; http://www.foo.bar/status
; http://www.foo.bar/status?json
; http://www.foo.bar/status?html
; http://www.foo.bar/status?xml
;
; By default the status page only outputs short status. Passing 'full' in the
; query string will also return status for each pool process.
; Example:
; http://www.foo.bar/status?full
; http://www.foo.bar/status?json&full
; http://www.foo.bar/status?html&full
; http://www.foo.bar/status?xml&full
; The Full status returns for each process:
; pid - the PID of the process;
; state - the state of the process (Idle, Running, ...);
; start time - the date and time the process has started;
; start since - the number of seconds since the process has started;
; requests - the number of requests the process has served;
; request duration - the duration in µs of the requests;
; request method - the request method (GET, POST, ...);
; request URI - the request URI with the query string;
; content length - the content length of the request (only with POST);
; user - the user (PHP_AUTH_USER) (or '-' if not set);
; script - the main script called (or '-' if not set);
; last request cpu - the %cpu the last request consumed
; it's always 0 if the process is not in Idle state
; because CPU calculation is done when the request
; processing has terminated;
; last request memory - the max amount of memory the last request consumed
; it's always 0 if the process is not in Idle state
; because memory calculation is done when the request
; processing has terminated;
; If the process is in Idle state, then informations are related to the
; last request the process has served. Otherwise informations are related to
; the current request being served.
; Example output:
; ************************
; pid: 31330
; state: Running
; start time: 01/Jul/2011:17:53:49 +0200
; start since: 63087
; requests: 12808
; request duration: 1250261
; request method: GET
; request URI: /test_mem.php?N=10000
; content length: 0
; user: -
; script: /home/fat/web/docs/php/test_mem.php
; last request cpu: 0.00
; last request memory: 0
;
; Note: There is a real-time FPM status monitoring sample web page available
; It's available in: /usr/local/share/php/fpm/status.html
;
; Note: The value must start with a leading slash (/). The value can be
; anything, but it may not be a good idea to use the .php extension or it
; may conflict with a real PHP file.
; Default Value: not set
pm.status_path = /status
; The ping URI to call the monitoring page of FPM. If this value is not set, no
; URI will be recognized as a ping page. This could be used to test from outside
; that FPM is alive and responding, or to
; - create a graph of FPM availability (rrd or such);
; - remove a server from a group if it is not responding (load balancing);
; - trigger alerts for the operating team (24/7).
; Note: The value must start with a leading slash (/). The value can be
; anything, but it may not be a good idea to use the .php extension or it
; may conflict with a real PHP file.
; Default Value: not set
ping.path = /health
; This directive may be used to customize the response of a ping request. The
; response is formatted as text/plain with a 200 response code.
; Default Value: pong
ping.response = OK
; The access log file
; Default: not set
;access.log = log/$pool.access.log
; The access log format.
; The following syntax is allowed
; %%: the '%' character
; %C: %CPU used by the request
; it can accept the following format:
; - %{user}C for user CPU only
; - %{system}C for system CPU only
; - %{total}C for user + system CPU (default)
; %d: time taken to serve the request
; it can accept the following format:
; - %{seconds}d (default)
; - %{miliseconds}d
; - %{mili}d
; - %{microseconds}d
; - %{micro}d
; %e: an environment variable (same as $_ENV or $_SERVER)
; it must be associated with embraces to specify the name of the env
; variable. Some exemples:
; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
; %f: script filename
; %l: content-length of the request (for POST request only)
; %m: request method
; %M: peak of memory allocated by PHP
; it can accept the following format:
; - %{bytes}M (default)
; - %{kilobytes}M
; - %{kilo}M
; - %{megabytes}M
; - %{mega}M
; %n: pool name
; %o: output header
; it must be associated with embraces to specify the name of the header:
; - %{Content-Type}o
; - %{X-Powered-By}o
; - %{Transfert-Encoding}o
; - ....
; %p: PID of the child that serviced the request
; %P: PID of the parent of the child that serviced the request
; %q: the query string
; %Q: the '?' character if query string exists
; %r: the request URI (without the query string, see %q and %Q)
; %R: remote IP address
; %s: status (response code)
; %t: server time the request was received
; it can accept a strftime(3) format:
; %d/%b/%Y:%H:%M:%S %z (default)
; The strftime(3) format must be encapsuled in a %{<strftime_format>}t tag
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
; %T: time the log has been written (the request has finished)
; it can accept a strftime(3) format:
; %d/%b/%Y:%H:%M:%S %z (default)
; The strftime(3) format must be encapsuled in a %{<strftime_format>}t tag
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
; %u: remote user
;
; Default: "%R - %u %t \"%m %r\" %s"
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
; The log file for slow requests
; Default Value: not set
; Note: slowlog is mandatory if request_slowlog_timeout is set
;slowlog = log/$pool.log.slow
; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_slowlog_timeout = 0
; Depth of slow log stack trace.
; Default Value: 20
;request_slowlog_trace_depth = 20
; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
request_terminate_timeout = 360
; Set open file descriptor rlimit.
; Default Value: system defined value
rlimit_files = 131072
; Set max core size rlimit.
; Possible Values: 'unlimited' or an integer greater or equal to 0
; Default Value: system defined value
rlimit_core = unlimited
; Chroot to this directory at the start. This value must be defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
; of its subdirectories. If the pool prefix is not set, the global prefix
; will be used instead.
; Note: chrooting is a great security feature and should be used whenever
; possible. However, all PHP paths will be relative to the chroot
; (error_log, sessions.save_path, ...).
; Default Value: not set
;chroot =
; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot
;chdir = /var/www
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
; pool configuration are added.
; Setting to "no" will make all environment variables available to PHP code
; via getenv(), $_ENV and $_SERVER.
; Default Value: yes
;clear_env = no
; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; execute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5 .php7
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
; the current environment.
; Default Value: clean env
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
; Additional php.ini defines, specific to this pool of workers. These settings
; overwrite the values previously defined in the php.ini. The directives are the
; same as the PHP SAPI:
; php_value/php_flag - you can set classic ini defines which can
; be overwritten from PHP call 'ini_set'.
; php_admin_value/php_admin_flag - these directives won't be overwritten by
; PHP call 'ini_set'
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
; Defining 'extension' will load the corresponding shared extension from
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
; overwrite previously defined php.ini values, but will append the new value
; instead.
; Note: path INI options can be relative and will be expanded with the prefix
; (pool, global or /usr/local)
; Default Value: nothing is defined by default except the values in php.ini and
; specified at startup with the -d argument
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
+17
View File
@@ -0,0 +1,17 @@
version: "3"
services:
php70:
build:
context: ./
dockerfile: Dockerfile
depends_on:
- redis
hostname: php70
container_name: php70
volumes:
- ./configs:/cfgs
env_file: .env
redis:
image: redis:latest
+16
View File
@@ -0,0 +1,16 @@
#!/bin/bash
if [ ! "$PHP_CRONTABS_PATH" == "" ]; then
echo "env CRONTABS_PATH: setting up crontabs [ $PHP_CRONTABS_PATH ]:";
for f in ${PHP_CRONTABS_PATH}; do
echo " - $f";
rm -f /etc/cron.d/${f##*/}
cp $f /etc/cron.d/
chmod 0644 /etc/cron.d/${f##*/}
done
touch /var/log/cron.log
printenv | grep -v "no_proxy" >> /etc/default/locale
/etc/init.d/cron start > /dev/null
fi
+86
View File
@@ -0,0 +1,86 @@
#!/bin/bash
echo "[`date +"%d-%b-%Y %T"`] PHP-FPM Docker container boot"
### create system user for php pool
if [ ! "$PHP_USER" == "" ] && [ ! "$PHP_UID" == "" ] && [ ! "$PHP_GID" == "" ] && [ ! "$PHP_HOME" == "" ]; then
echo "env PHP_USER: creating new system user: ${PHP_USER} ${PHP_UID}:${PHP_GID} ${PHP_HOME}"
mkdir -p $PHP_HOME && \
groupadd -f $PHP_USER -g $PHP_GID && \
useradd -d $PHP_HOME -u $PHP_UID -g $PHP_GID -s /usr/sbin/nologin $PHP_USER
fi
### load PHP ini configurations
if [ ! "$PHP_INI_PATH" == "" ]; then
echo "env PHP_INI_PATH: copy from [ $PHP_INI_PATH ] into [ /usr/local/etc/php/conf.d/ ] folder"
for f in ${PHP_INI_PATH}; do
echo " - $f";
rm -f /usr/local/etc/php/conf.d/${f##*/}
cp $f /usr/local/etc/php/conf.d/
done
fi
### make sure to create clean php-fpm.conf
### to avoid adding multiple times the same lines next
### in case container is restarting
echo "[global]" > /usr/local/etc/php-fpm.conf
echo "include=etc/php-fpm.d/*.conf" >> /usr/local/etc/php-fpm.conf
### load PHP-FPM pool configurations
if [ ! "$PHP_POOL_PATH" == "" ]; then
echo "env PHP_POOL_PATH: copy from [ $PHP_POOL_PATH ] into [ /usr/local/etc/php-fpm.d/ ] folder"
for f in ${PHP_POOL_PATH}; do
echo " - $f";
rm -f /usr/local/etc/php-fpm.d/${f##*/}
cp $f /usr/local/etc/php-fpm.d/
done
fi
### scan for config files in folders from PHP_INI_SCAN_DIR
if [ ! -z ${PHP_INI_SCAN_DIR+x} ] && [ "$PHP_INI_SCAN_DIR" != "" ] ; then
echo "env PHP_INI_SCAN_DIR: copy from [ $PHP_INI_SCAN_DIR ] into [ /usr/local/etc/php-fpm.d/ ] folder"
### break down path by : separator
IFS=':' read -ra DIRECTORIES <<< "$PHP_INI_SCAN_DIR"
for DIR in "${DIRECTORIES[@]}"; do
### check if there are any php pool configuration files to copy
COUNT=`ls -1 $DIR/*.conf 2>/dev/null | wc -l`
if [ $COUNT != "0" ] ; then
echo " - $DIR/*.conf";
cp -f $DIR/*.conf /usr/local/etc/php-fpm.d/
fi
done
fi
### load boot bash scripts
for f in /usr/local/bin/*.sh; do
/bin/bash -c $f
done
### load additional on-demand scripts
if [ ! -z ${PHP_BOOT_SCRIPTS+x} ] && [ "$PHP_BOOT_SCRIPTS" != "" ]; then
echo "env PHP_BOOT_SCRIPTS: executing scripts in [ $PHP_BOOT_SCRIPTS ]"
for f in ${PHP_BOOT_SCRIPTS}; do
echo " - $f";
rm -f /usr/local/bin/${f##*/}
cp $f /usr/local/bin/
chmod +x /usr/local/bin/${f##*/}
done
for f in ${PHP_BOOT_SCRIPTS}; do
/bin/bash -c /usr/local/bin/${f##*/}
done
fi
### expose php version
echo
/usr/local/bin/php -v
@@ -0,0 +1,11 @@
#!/bin/sh
set -e
/usr/local/bin/docker-boot
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- php-fpm "$@"
fi
exec "$@"
+10
View File
@@ -0,0 +1,10 @@
<?php
if (isset($_SERVER['TEST_EMAIL']) && trim($_SERVER['TEST_EMAIL']) != "") {
$email = $_SERVER['TEST_EMAIL'];
$subject = "PHP email test script";
$message = "This is a test email to confirm that the PHP mail function works!";
$headers = "From: " . $email;
mail($email, $subject, $message, $headers);
}
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
if [ ! -z ${NEWRELIC_LICENSE+x} ] && [ "$NEWRELIC_LICENSE" != "" ] ; then
echo "env NEWRELIC_LICENSE: setting up newrelic license"
sed -i "s/REPLACE_WITH_REAL_KEY/$NEWRELIC_LICENSE/g" /usr/local/etc/php/conf.d/newrelic.ini
nrsysmond-config --set license_key=$NEWRELIC_LICENSE
service newrelic-sysmond start > /dev/null
chmod u+rw,g+rw,o+rw /var/log/newrelic/newrelic-daemon.log
else
rm -f /usr/local/etc/php/conf.d/newrelic.ini
fi
+38
View File
@@ -0,0 +1,38 @@
#!/usr/local/bin/php
<?php
/**
* This script is a sendmail wrapper for php to log calls of the php mail() function.
* Author: Till Brehm, www.ispconfig.org
* (Hopefully) secured by David Goodwin <david @ _palepurple_.co.uk>
* https://www.howtoforge.com/how-to-log-emails-sent-with-phps-mail-function-to-detect-form-spam
*/
$sendmail_bin = '/usr/sbin/sendmail';
// Get the email content
$mail = '';
$logline = '';
$pointer = fopen('php://stdin', 'r');
while ($line = fgets($pointer)) {
if (preg_match('/^to:/i', $line) || preg_match('/^from:/i', $line)) {
$logline .= trim($line) . ' ';
}
$mail .= $line;
}
// Compose the sendmail command
$command = 'echo ' . escapeshellarg($mail) . ' | ' . $sendmail_bin . ' -t -i';
if (isset($_SERVER['argc'])) {
for ($i = 1; $i < $_SERVER['argc']; $i++) {
$command .= escapeshellarg($_SERVER['argv'][$i]) . ' ';
}
}
// Write the log
error_log("Email sent: " . $logline);
// Execute the command
return shell_exec($command);
+38
View File
@@ -0,0 +1,38 @@
#!/bin/bash
if [ ! -z ${SENDGRID_API_KEY+x} ] && [ "$SENDGRID_API_KEY" != "" ]; then
echo "env SMTP_LOGIN: sendgrid credentials for email routing";
echo "[smtp.sendgrid.net]:2525 apikey:${SENDGRID_API_KEY}" > /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd.db
rm /etc/postfix/sasl_passwd
### update email relay configuration for SendGrid
sed -i 's/default_transport = error//g' /etc/postfix/main.cf
sed -i 's/relay_transport = error//g' /etc/postfix/main.cf
### delete following lines if already exist before adding
sed -i '/relayhost/d' /etc/postfix/main.cf
sed -i '/smtp_tls_security_level/d' /etc/postfix/main.cf
sed -i '/smtp_sasl_auth_enable/d' /etc/postfix/main.cf
sed -i '/smtp_sasl_password_maps/d' /etc/postfix/main.cf
sed -i '/header_size_limit/d' /etc/postfix/main.cf
sed -i '/smtp_sasl_security_options/d' /etc/postfix/main.cf
### add following lines
echo "relayhost = [smtp.sendgrid.net]:2525" >> /etc/postfix/main.cf
echo "smtp_tls_security_level = encrypt" >> /etc/postfix/main.cf
echo "smtp_sasl_auth_enable = yes" >> /etc/postfix/main.cf
echo "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd" >> /etc/postfix/main.cf
echo "header_size_limit = 4096000" >> /etc/postfix/main.cf
echo "smtp_sasl_security_options = noanonymous" >> /etc/postfix/main.cf
/etc/init.d/postfix start > /dev/null
### send test email if TEST_EMAIL env variable is set
if [ ! -z ${TEST_EMAIL+x} ] && [ "$TEST_EMAIL" != "" ]; then
echo " - sending test email to: [ $TEST_EMAIL ]";
php /usr/local/bin/emailtest.php
fi
fi
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
### update PHP session handler
if [ ! "$PHP_SESSION_HANDLER" == "" ] && [ ! "$PHP_SESSION_PATH" == "" ]; then
echo "env PHP_SESSION_HANDLER: updating php session handler [ $PHP_SESSION_PATH ]"
echo "session.save_handler = $PHP_SESSION_HANDLER" > /usr/local/etc/php/conf.d/zz-session.ini
echo "session.save_path = \"$PHP_SESSION_PATH\"" >> /usr/local/etc/php/conf.d/zz-session.ini
fi
+1
View File
@@ -0,0 +1 @@
.env
+295
View File
@@ -0,0 +1,295 @@
FROM php:7.1-fpm
MAINTAINER Mark Hilton <nerd305@gmail.com>
RUN apt-get update && \
apt-get install -y --no-install-recommends \
git \
libmemcached-dev \
libz-dev \
libpq-dev \
libjpeg-dev \
libfreetype6-dev \
libssl-dev \
libmcrypt-dev
RUN docker-php-ext-install mcrypt
RUN docker-php-ext-install mysqli pdo pdo_mysql
# install the PHP gd library
RUN docker-php-ext-configure gd \
--enable-gd-native-ttf \
--with-jpeg-dir=/usr/lib \
--with-freetype-dir=/usr/include/freetype2 && \
docker-php-ext-install gd
# install the soap extension
RUN apt-get update -yqq && \
apt-get -y install libxml2-dev && \
docker-php-ext-install soap
# install Php Redis Extension
RUN pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis
# install the mongodb extension
RUN pecl install mongodb && \
docker-php-ext-enable mongodb
# install bcmath, mbstring and zip extensions
RUN docker-php-ext-install bcmath && \
docker-php-ext-install mbstring && \
docker-php-ext-install zip
# enable Exif PHP extentions requirements
RUN docker-php-ext-install exif
# tokenizer Modifications:
RUN docker-php-ext-install tokenizer
# install intl and requirements
RUN apt-get update -yqq && \
apt-get install -y zlib1g-dev libicu-dev g++ && \
docker-php-ext-configure intl && \
docker-php-ext-install intl
# install the ghostscript extension for PDF editing
RUN apt-get update -yqq \
&& apt-get install -y \
poppler-utils \
ghostscript
# LDAP:
RUN apt-get update -yqq && \
apt-get install -y libldap2-dev && \
docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \
docker-php-ext-install ldap
RUN yes "" | pecl install msgpack-beta \
&& echo "extension=msgpack.so" > /usr/local/etc/php/conf.d/ext-msgpack.ini
# compile igbinary extension
RUN cd /tmp/ && git clone https://github.com/igbinary/igbinary "php-igbinary" && \
cd php-igbinary && \
phpize && \
./configure && \
make && \
make install && \
make clean && \
docker-php-ext-enable igbinary
# curl extension
RUN apt-get install -y curl libcurl4-openssl-dev --no-install-recommends && \
docker-php-ext-install curl
# data structures extension
RUN pecl install ds && \
docker-php-ext-enable ds
# imagick
RUN apt-get update && apt-get install -y libmagickwand-6.q16-dev --no-install-recommends && \
ln -s /usr/lib/x86_64-linux-gnu/ImageMagick-6.8.9/bin-Q16/MagickWand-config /usr/bin && \
pecl install imagick && \
echo "extension=imagick.so" > /usr/local/etc/php/conf.d/ext-imagick.ini
# ssh2 module
RUN apt-get install -y libssh2-1-dev && \
pecl install ssh2-1.0 && \
docker-php-ext-enable ssh2
# php-module: curl dom bz2 gd json mysqli pcntl pdo pdo_mysql phar posix
RUN apt-get install -y libxml2-dev libbz2-dev re2c libpng++-dev \
libjpeg-dev libvpx-dev zlib1g-dev libgd-dev \
libtidy-dev libxslt1-dev libmagic-dev libexif-dev file \
sqlite3 libsqlite3-dev libxslt-dev
RUN export CFLAGS="-I/usr/src/php" && \
docker-php-ext-install xmlreader xmlwriter
RUN docker-php-ext-configure json && \
docker-php-ext-configure session && \
docker-php-ext-configure ctype && \
docker-php-ext-configure tokenizer && \
docker-php-ext-configure simplexml && \
docker-php-ext-configure dom && \
docker-php-ext-configure mbstring && \
docker-php-ext-configure zip && \
docker-php-ext-configure pdo && \
docker-php-ext-configure pdo_sqlite && \
docker-php-ext-configure pdo_mysql && \
docker-php-ext-configure mysqli && \
docker-php-ext-configure iconv && \
docker-php-ext-configure xml && \
docker-php-ext-configure phar
RUN docker-php-ext-install \
dom \
bz2 \
json \
pcntl \
phar \
posix \
simplexml \
soap \
tidy \
xml \
xmlrpc \
xsl \
calendar \
ctype \
fileinfo \
ftp \
sysvmsg \
sysvsem \
sysvshm
# install the php memcache & memcached extension
RUN set -x \
&& apt-get update && apt-get install -y --no-install-recommends unzip libssl-dev libpcre3 libpcre3-dev \
&& cd /tmp \
&& curl -sSL -o php7.zip https://github.com/websupport-sk/pecl-memcache/archive/php7.zip \
&& unzip php7 \
&& cd pecl-memcache-php7 \
&& /usr/local/bin/phpize \
&& ./configure --with-php-config=/usr/local/bin/php-config \
&& make \
&& make install \
&& echo "extension=memcache.so" > /usr/local/etc/php/conf.d/ext-memcache.ini \
&& rm -rf /tmp/pecl-memcache-php7 php7.zip
RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \
&& mkdir -p memcached \
&& tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
&& ( \
cd memcached \
&& phpize \
&& ./configure \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r memcached \
&& rm /tmp/memcached.tar.gz \
&& docker-php-ext-enable memcached
# mhash
RUN apt-get install -y libmhash2 libmhash-dev libc-client-dev libkrb5-dev
RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
&& docker-php-ext-install imap
RUN docker-php-ext-configure hash --with-mhash && \
docker-php-ext-install hash
# Opcache
RUN docker-php-ext-install opcache
# install APCu
RUN pecl install apcu-5.1.8 && \
pecl install apcu_bc-1.0.3 && \
docker-php-ext-enable apcu --ini-name 10-docker-php-ext-apcu.ini && \
docker-php-ext-enable apc --ini-name 20-docker-php-ext-apc.ini
# install MSSQL support
# install ODBC driver
RUN apt-get update -y && apt-get install -y apt-transport-https locales gnupg
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list && \
export DEBIAN_FRONTEND=noninteractive && apt-get update -y && \
ACCEPT_EULA=Y apt-get install -y msodbcsql unixodbc-dev
RUN set -xe \
&& pecl install pdo_sqlsrv \
&& docker-php-ext-enable pdo_sqlsrv \
&& apt-get purge -y unixodbc-dev && apt-get autoremove -y && apt-get clean
# set locale to utf-8
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \
locale-gen
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
# geoip - DEPRECIATED: using provided by Nginx container
# RUN runtimeRequirements="libgeoip-dev" \
# && apt-get update && apt-get install -y ${runtimeRequirements} \
# && pecl install geoip-1.1.1 \
# && printf "extension=geoip.so\n[geoip]\ngeoip.custom_directory = /usr/share/GeoIP/\n" > /usr/local/etc/php/conf.d/ext-geoip.ini
# RUN mkdir -p /usr/share/GeoIP && cd /usr/share/GeoIP/ && \
# rm -f GeoIP.dat GeoIPv6.dat && \
# curl -L -O http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz && \
# curl -L -O http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz && \
# gzip -d * && \
# mv GeoLiteCity.dat GeoIPCity.dat
#
#--------------------------------------------------------------------------
# Final Touches
#--------------------------------------------------------------------------
#
# install helpful libs
RUN apt-get -y install libfcgi0ldbl nano cron
# crontab fix: https://stackoverflow.com/questions/43323754/cannot-make-remove-an-entry-for-the-specified-session-cron
RUN sed -i '/session required pam_loginuid.so/c\#session required pam_loginuid.so' /etc/pam.d/cron
# expose /status for health check & stop access log
RUN echo "pm.status_path = /status" >> /usr/local/etc/php/conf.d/zz-docker.conf && \
echo "ping.path = /ping" >> /usr/local/etc/php/conf.d/zz-docker.conf && \
echo "ping.response = OK" >> /usr/local/etc/php/conf.d/zz-docker.conf && \
echo "access.log = /proc/self/fd/1" >> /usr/local/etc/php/conf.d/zz-docker.conf
# composer
# consider removing to a separate container
# RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer && chmod +x /usr/local/bin/composer
# ENV PATH="$PATH:/root/.composer/vendor/bin"
# install modman
# RUN curl -s -L https://raw.github.com/colinmollenhour/modman/master/modman-installer | bash && \
# mv ~/bin/modman /usr/sbin/
# install NewRelic agent
RUN echo 'deb http://apt.newrelic.com/debian/ newrelic non-free' | tee /etc/apt/sources.list.d/newrelic.list && \
curl https://download.newrelic.com/548C16BF.gpg | apt-key add - && \
apt-get -y update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install newrelic-php5 newrelic-sysmond && \
export NR_INSTALL_SILENT=1 && newrelic-install install
# install blackfire.io profiler
# RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \
# && curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$version \
# && tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp \
# && mv /tmp/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so \
# && printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini
# install SendGrid
RUN echo "postfix postfix/mailname string localhost" | debconf-set-selections && \
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections && \
DEBIAN_FRONTEND=noninteractive apt-get install postfix libsasl2-modules -y
# install shared PHP code
RUN git clone https://github.com/nrk/predis.git /usr/local/lib/php/predis && \
git clone https://github.com/markhilton/redis-http-cache.git /usr/local/lib/php/redis-http-cache
# Set default work directory
ADD scripts/* /usr/local/bin/
RUN chmod +x /usr/local/bin/*
# install aliases
RUN echo "" >> ~/.bashrc && \
echo "# Load Custom Aliases" >> ~/.bashrc && \
echo "source /usr/local/bin/aliases.sh" >> ~/.bashrc && \
echo "" >> ~/.bashrc && \
sed -i 's/\r//' /usr/local/bin/aliases.sh && \
sed -i 's/^#! \/bin\/sh/#! \/bin\/bash/' /usr/local/bin/aliases.sh
# Clean up
RUN apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Health check
HEALTHCHECK --interval=5s --timeout=3s \
CMD SCRIPT_NAME=/status SCRIPT_FILENAME=/status REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000 || exit 1
EXPOSE 9000
WORKDIR /app
CMD ["php-fpm"]
+22
View File
@@ -0,0 +1,22 @@
version: '3'
services:
php70:
image: crunchgeek/php-fpm:7.0.r1
restart: always
hostname: php70
container_name: php70
environment:
- ENDPOINT=${ENDPOINT}
- FILESYSTEM=${FILESYSTEM}
- APPLICATIONS=${APPLICATIONS}
- NEWRELIC_LICENSE=${NEWRELIC_LICENSE}
- SMTP_LOGIN=${SMTP_LOGIN}
- SMTP_PASSWORD=${SMTP_PASSWORD}
volumes:
- ${APPLICATIONS}:/applications
- configurations:/usr/local/etc/sites/
volumes:
configurations:
+144
View File
@@ -0,0 +1,144 @@
#! /bin/bash
# Colors used for status updates
ESC_SEQ="\x1b["
COL_RESET=$ESC_SEQ"39;49;00m"
COL_RED=$ESC_SEQ"31;01m"
COL_GREEN=$ESC_SEQ"32;01m"
COL_YELLOW=$ESC_SEQ"33;01m"
COL_BLUE=$ESC_SEQ"34;01m"
COL_MAGENTA=$ESC_SEQ"35;01m"
COL_CYAN=$ESC_SEQ"36;01m"
# Detect which `ls` flavor is in use
if ls --color > /dev/null 2>&1; then # GNU `ls`
colorflag="--color"
export LS_COLORS='no=00:fi=00:di=01;31:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:'
else # macOS `ls`
colorflag="-G"
export LSCOLORS='BxBxhxDxfxhxhxhxhxcxcx'
fi
# List all files colorized in long format
#alias l="ls -lF ${colorflag}"
### MEGA: I want l and la ti return hisdden files
alias l="ls -laF ${colorflag}"
# List all files colorized in long format, including dot files
alias la="ls -laF ${colorflag}"
# List only directories
alias lsd="ls -lF ${colorflag} | grep --color=never '^d'"
# Always use color output for `ls`
alias ls="command ls ${colorflag}"
# Commonly Used Aliases
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias ~="cd ~" # `cd` is probably faster to type though
alias -- -="cd -"
alias home="cd ~"
alias h="history"
alias j="jobs"
alias e='exit'
alias c="clear"
alias cla="clear && ls -l"
alias cll="clear && ls -la"
alias cls="clear && ls"
alias code="cd /var/www"
alias ea="vi ~/aliases"
# Always enable colored `grep` output
# Note: `GREP_OPTIONS="--color=auto"` is deprecated, hence the alias usage.
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias art="php artisan"
alias artisan="php artisan"
alias cdump="composer dump-autoload -o"
alias composer:dump="composer dump-autoload -o"
alias db:reset="php artisan migrate:reset && php artisan migrate --seed"
alias dusk="php artisan dusk"
alias fresh="php artisan migrate:fresh"
alias migrate="php artisan migrate"
alias refresh="php artisan migrate:refresh"
alias rollback="php artisan migrate:rollback"
alias seed="php artisan:seed"
alias serve="php artisan serve --quiet &"
alias phpunit="./vendor/bin/phpunit"
alias pu="phpunit"
alias puf="phpunit --filter"
alias pud='phpunit --debug'
alias cc='codecept'
alias ccb='codecept build'
alias ccr='codecept run'
alias ccu='codecept run unit'
alias ccf='codecept run functional'
alias g="gulp"
alias npm-global="npm list -g --depth 0"
alias ra="reload"
alias reload="source ~/.aliases && echo \"$COL_GREEN ==> Aliases Reloaded... $COL_RESET \n \""
alias run="npm run"
alias tree="xtree"
# Xvfb
alias xvfb="Xvfb -ac :0 -screen 0 1024x768x16 &"
# requires installation of 'https://www.npmjs.com/package/npms-cli'
alias npms="npms search"
# requires installation of 'https://www.npmjs.com/package/package-menu-cli'
alias pm="package-menu"
# requires installation of 'https://www.npmjs.com/package/pkg-version-cli'
alias pv="package-version"
# requires installation of 'https://github.com/sindresorhus/latest-version-cli'
alias lv="latest-version"
# git aliases
alias gaa="git add ."
alias gd="git --no-pager diff"
alias git-revert="git reset --hard && git clean -df"
alias gs="git status"
alias whoops="git reset --hard && git clean -df"
# Create a new directory and enter it
function mkd() {
mkdir -p "$@" && cd "$@"
}
function md() {
mkdir -p "$@" && cd "$@"
}
function xtree {
find ${1:-.} -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
}
# `tre` is a shorthand for `tree` with hidden files and color enabled, ignoring
# the `.git` directory, listing directories first. The output gets piped into
# `less` with options to preserve color and line numbers, unless the output is
# small enough for one screen.
function tre() {
tree -aC -I '.git|node_modules|bower_components' --dirsfirst "$@" | less -FRNX;
}
# Determine size of a file or total size of a directory
function fs() {
if du -b /dev/null > /dev/null 2>&1; then
local arg=-sbh;
else
local arg=-sh;
fi
if [[ -n "$@" ]]; then
du $arg -- "$@";
else
du $arg .[^.]* ./*;
fi;
}
+17
View File
@@ -0,0 +1,17 @@
#!/bin/bash
if [ ! -z ${PHP_CRONTABS_PATH+x} ] && [ "$PHP_CRONTABS_PATH" != "" ]; then
printf "env CRONTABS_PATH: setting up crontabs: ";
for f in ${PHP_CRONTABS_PATH}; do
printf "$f, ";
rm -f /etc/cron.d/${f##*/}
cp $f /etc/cron.d/
chmod 0644 /etc/cron.d/${f##*/}
done
echo
printenv | grep -v "no_proxy" >> /etc/environment
/etc/init.d/cron start > /dev/null
fi
+62
View File
@@ -0,0 +1,62 @@
#!/bin/bash
/usr/local/bin/php -v
### create system user for php pool
if [ ! -z ${PHP_USER+x} ] && [ ! -z ${PHP_UID+x} ] && [ ! -z ${PHP_GID+x} ] && [ ! -z ${PHP_HOME+x} ] && [ "$PHP_USER" != "" ] && [ "$PHP_UID" != "" ] && [ "$PHP_GID" != "" ] && [ "$PHP_HOME" != "" ]; then
echo "env PHP_USER: creating new system user: ${PHP_USER} ${PHP_UID}:${PHP_GID} ${PHP_HOME}"
groupadd -f $PHP_USER -g $PHP_GID && \
useradd -d $PHP_HOME -u $PHP_UID -g $PHP_GID -s /bin/false $PHP_USER
fi
### load PHP ini configurations
if [ ! -z ${PHP_INI_PATH+x} ] && [ "$PHP_INI_PATH" != "" ]; then
printf "env PHP_INI_PATH: "
for f in ${PHP_INI_PATH}; do
printf "$f, ";
rm -f /usr/local/etc/php/conf.d/${f##*/}
cp $f /usr/local/etc/php/conf.d/
done
echo
fi
### make sure to create clean php-fpm.conf
### to avoid adding multiple times the same lines next
### in case container is restarting
echo "[global]" > /usr/local/etc/php-fpm.conf
echo "include=etc/php-fpm.d/*.conf" >> /usr/local/etc/php-fpm.conf
### remove default www.conf pool
### and load PHP-FPM pool configurations
if [ ! -z ${PHP_POOL_PATH+x} ] && [ "$PHP_POOL_PATH" != "" ]; then
printf "env PHP_POOL_PATH: "
for f in ${PHP_POOL_PATH}; do
printf "$f, ";
rm -f /usr/local/etc/php-fpm.d/${f##*/}
cp $f /usr/local/etc/php-fpm.d/
done
echo
fi
### load boot bash scripts
for f in /usr/local/bin/*.sh; do
/bin/bash -c $f
done
### load bash scripts
if [ ! -z ${PHP_BOOT_SCRIPTS+x} ] && [ "$PHP_BOOT_SCRIPTS" != "" ]; then
printf "env PHP_BOOT_SCRIPTS: "
for f in ${PHP_BOOT_SCRIPTS}; do
printf "$f, ";
rm -f /usr/local/bin/${f##*/}
cp $f /usr/local/bin/
chmod +x /usr/local/bin/${f##*/}
/bin/bash -c /usr/local/bin/${f##*/}
done
echo
fi
@@ -0,0 +1,11 @@
#!/bin/sh
set -e
/usr/local/bin/docker-boot
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- php-fpm "$@"
fi
exec "$@"
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
if [ ! -z ${NEWRELIC_LICENSE+x} ] && [ "$NEWRELIC_LICENSE" != "" ] ; then
echo "env NEWRELIC_LICENSE: setting up newrelic license"
sed -i "s/REPLACE_WITH_REAL_KEY/$NEWRELIC_LICENSE/g" /usr/local/etc/php/conf.d/newrelic.ini
nrsysmond-config --set license_key=$NEWRELIC_LICENSE
service newrelic-sysmond start > /dev/null
fi
+39
View File
@@ -0,0 +1,39 @@
#!/usr/local/bin/php
<?php
/**
* This script is a sendmail wrapper for php to log calls of the php mail() function.
* Author: Till Brehm, www.ispconfig.org
* (Hopefully) secured by David Goodwin <david @ _palepurple_.co.uk>
* https://www.howtoforge.com/how-to-log-emails-sent-with-phps-mail-function-to-detect-form-spam
*/
$sendmail_bin = '/usr/sbin/sendmail';
// Get the email content
$mail = '';
$logline = '';
$pointer = fopen('php://stdin', 'r');
while ($line = fgets($pointer)) {
if (preg_match('/^to:/i', $line) || preg_match('/^from:/i', $line)) {
$logline .= trim($line) . ' ';
}
$mail .= $line;
}
// Compose the sendmail command
$command = 'echo ' . escapeshellarg($mail) . ' | ' . $sendmail_bin . ' -t -i';
if (isset($_SERVER['argc'])) {
for ($i = 1; $i < $_SERVER['argc']; $i++) {
$command .= escapeshellarg($_SERVER['argv'][$i]) . ' ';
}
}
// Write the log
$stdout = fopen('php://stdout', 'w');
fwrite($stdout, (isset($_ENV['USER']) ? $_ENV['USER'] . ' ' : '') . $logline . ' - ' . $command . "\n");
// Execute the command
return shell_exec($command);
+24
View File
@@ -0,0 +1,24 @@
#!/bin/bash
if [ ! -z ${SMTP_LOGIN+x} ] && [ ! -z ${SMTP_PASSWORD+x} ] && [ "$SMTP_LOGIN" != "" ] && [ "$SMTP_PASSWORD" != "" ]; then
echo "env SMTP_LOGIN: sendgrid credentials for email routing";
echo "[smtp.sendgrid.net]:2525 ${SMTP_LOGIN}:${SMTP_PASSWORD}" >> /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd.db
rm /etc/postfix/sasl_passwd
### update email relay configuration for SendGrid
sed -i 's/default_transport = error//g' /etc/postfix/main.cf && \
sed -i 's/relay_transport = error//g' /etc/postfix/main.cf && \
sed -i 's/relayhost = //g' /etc/postfix/main.cf && \
echo "relayhost = [smtp.sendgrid.net]:2525" >> /etc/postfix/main.cf && \
echo "smtp_tls_security_level = encrypt" >> /etc/postfix/main.cf && \
echo "smtp_sasl_auth_enable = yes" >> /etc/postfix/main.cf && \
echo "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd" >> /etc/postfix/main.cf && \
echo "header_size_limit = 4096000" >> /etc/postfix/main.cf && \
echo "smtp_sasl_security_options = noanonymous" >> /etc/postfix/main.cf
/etc/init.d/postfix start > /dev/null
fi
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
### update PHP session handler
if [ ! -z ${PHP_SESSION_HANDLER+x} ] && [ ! -z ${PHP_SESSION_PATH+x} ] && [ "$PHP_SESSION_HANDLER" != "" ] && [ "$PHP_SESSION_PATH" != "" ]; then
echo "env PHP_SESSION_HANDLER: updating php session handler [ $PHP_SESSION_PATH ]"
echo "session.save_handler = $PHP_SESSION_HANDLER" > /usr/local/etc/php/conf.d/zz-session.ini
echo "session.save_path = \"$PHP_SESSION_PATH\"" >> /usr/local/etc/php/conf.d/zz-session.ini
fi
+16
View File
@@ -0,0 +1,16 @@
PHP_UID=1000
PHP_GID=1000
PHP_HOME=/app
PHP_USER=php-fpm
# PHP_INI_SCAN_DIR=/cfgs:/usr/local/etc/php/conf.d
PHP_INI_PATH=/cfgs/php.ini
PHP_POOL_PATH=/cfgs/*/*-pool.conf
PHP_BOOT_SCRIPTS=/cfgs/start.sh
PHP_CRONTABS_PATH=/cfgs/cron
PHP_SESSION_HANDLER=redis
PHP_SESSION_PATH=tcp://redis.host:6379
# private
TEST_EMAIL=name@domain.com
NEWRELIC_LICENSE=newrelic_license
SENDGRID_API_KEY=sendgrid_api_key
+2
View File
@@ -0,0 +1,2 @@
.env
test/
+171
View File
@@ -0,0 +1,171 @@
FROM php:7.2-fpm
RUN apt-get update && \
apt-get install -y --no-install-recommends \
git \
libmemcached-dev \
libz-dev \
libpq-dev \
libssl-dev libssl-doc libsasl2-dev \
libmcrypt-dev \
libxml2-dev \
zlib1g-dev libicu-dev g++ \
libldap2-dev libbz2-dev \
curl libcurl4-openssl-dev \
libenchant-dev libgmp-dev firebird-dev libib-util \
re2c libpng++-dev \
libwebp-dev libjpeg-dev libjpeg62-turbo-dev libpng-dev libxpm-dev libvpx-dev libfreetype6-dev \
libmagick++-dev \
libmagickwand-dev \
zlib1g-dev libgd-dev \
libtidy-dev libxslt1-dev libmagic-dev libexif-dev file \
sqlite3 libsqlite3-dev libxslt-dev \
libmhash2 libmhash-dev libc-client-dev libkrb5-dev libssh2-1-dev \
unzip libpcre3 libpcre3-dev \
poppler-utils ghostscript libmagickwand-6.q16-dev libsnmp-dev libedit-dev libreadline6-dev libsodium-dev \
freetds-bin freetds-dev freetds-common libct4 libsybdb5 tdsodbc libreadline-dev librecode-dev libpspell-dev
# fix for docker-php-ext-install pdo_dblib
# https://stackoverflow.com/questions/43617752/docker-php-and-freetds-cannot-find-freetds-in-know-installation-directories
RUN ln -s /usr/lib/x86_64-linux-gnu/libsybdb.so /usr/lib/
RUN docker-php-ext-configure hash --with-mhash && \
docker-php-ext-install hash
RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install imap iconv
RUN docker-php-ext-install bcmath bz2 calendar ctype curl dba dom enchant
RUN docker-php-ext-install fileinfo exif ftp gd gettext gmp
RUN docker-php-ext-install interbase intl json ldap mbstring mysqli
RUN docker-php-ext-install opcache pcntl pspell
RUN docker-php-ext-install pdo pdo_dblib pdo_mysql pdo_pgsql pdo_sqlite pgsql phar posix
RUN docker-php-ext-install readline recode
RUN docker-php-ext-install session shmop simplexml soap sockets sodium
RUN docker-php-ext-install sysvmsg sysvsem sysvshm
# RUN docker-php-ext-install snmp
# fix for docker-php-ext-install xmlreader
# https://github.com/docker-library/php/issues/373
RUN export CFLAGS="-I/usr/src/php" && docker-php-ext-install xmlreader xmlwriter xml xmlrpc xsl
RUN docker-php-ext-install tidy tokenizer wddx zend_test zip
# already build in... what they say...
# RUN docker-php-ext-install filter reflection spl standard
# RUN docker-php-ext-install pdo_firebird pdo_oci
# install pecl extension
RUN pecl install ds-1.3.0 && \
pecl install imagick && \
pecl install igbinary && \
pecl install ssh2-1.0 && \
pecl install redis-4.0.1 && \
pecl install memcached-3.0.4 && \
docker-php-ext-enable ds imagick igbinary ssh2 redis memcached
# install pecl extension
RUN pecl install mongodb && docker-php-ext-enable mongodb
RUN yes "" | pecl install msgpack && \
docker-php-ext-enable msgpack
# install the php memcache extension
RUN set -x \
&& cd /tmp \
&& curl -sSL -o php7.zip https://github.com/websupport-sk/pecl-memcache/archive/php7.zip \
&& unzip php7 \
&& cd pecl-memcache-php7 \
&& /usr/local/bin/phpize \
&& ./configure --with-php-config=/usr/local/bin/php-config \
&& make \
&& make install \
&& echo "extension=memcache.so" > /usr/local/etc/php/conf.d/docker-php-ext-memcache.ini \
&& rm -rf /tmp/pecl-memcache-php7 php7.zip
# install APCu
RUN pecl install apcu-5.1.8 && \
pecl install apcu_bc-1.0.3 && \
docker-php-ext-enable apcu --ini-name docker-php-ext-10-apcu.ini && \
docker-php-ext-enable apc --ini-name docker-php-ext-20-apc.ini
# oracle database
# RUN curl -o /tmp/instantclient-sdk.zip -L https://github.com/bumpx/oracle-instantclient/raw/master/instantclient-sdk-linux.x64-12.1.0.2.0.zip && \
# curl -o /tmp/instantclient-basic.zip -L https://github.com/bumpx/oracle-instantclient/raw/master/instantclient-basic-linux.x64-12.1.0.2.0.zip
# RUN unzip /tmp/instantclient-basic.zip -d /usr/local/ && \
# unzip /tmp/instantclient-sdk.zip -d /usr/local/ && \
# ln -s /usr/local/instantclient_12_1 /usr/local/instantclient && \
# ln -s /usr/local/instantclient/libclntsh.so.12.1 /usr/local/instantclient/libclntsh.so && \
# docker-php-ext-configure oci8 --with-oci8=instantclient,/usr/local/instantclient && \
# docker-php-ext-install oci8
RUN apt-get update -y && apt-get install -y apt-transport-https locales gnupg
# install MSSQL support and ODBC driver
# RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
# curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list && \
# export DEBIAN_FRONTEND=noninteractive && apt-get update -y && \
# ACCEPT_EULA=Y apt-get install -y msodbcsql unixodbc-dev
# RUN set -xe \
# && pecl install pdo_sqlsrv \
# && docker-php-ext-enable pdo_sqlsrv \
# && apt-get purge -y unixodbc-dev && apt-get autoremove -y && apt-get clean
# install GD
RUN docker-php-ext-configure gd \
--with-gd \
--with-webp-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-xpm-dir \
--with-freetype-dir && \
docker-php-ext-install gd
# set locale to utf-8
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
#RUN pecl install stackdriver_debugger-alpha \
# && echo "extension=stackdriver_debugger.so" > /usr/local/etc/php/conf.d/docker-php-ext-stackdriver_debugger.ini
# install xdebug
RUN pecl install xdebug && docker-php-ext-enable xdebug
#--------------------------------------------------------------------------
# Final Touches
#--------------------------------------------------------------------------
# install required libs for health check
RUN apt-get -y install libfcgi0ldbl nano htop iotop lsof cron mariadb-client redis-tools
# install composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
&& php composer-setup.php \
&& php -r "unlink('composer-setup.php');" \
&& mv composer.phar /usr/local/sbin/composer \
&& chmod +x /usr/local/sbin/composer
# install NewRelic agent
RUN echo 'deb http://apt.newrelic.com/debian/ newrelic non-free' | tee /etc/apt/sources.list.d/newrelic.list && \
curl https://download.newrelic.com/548C16BF.gpg | apt-key add - && \
apt-get -y update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install newrelic-php5 newrelic-sysmond && \
export NR_INSTALL_SILENT=1 && newrelic-install install
# install SendGrid
RUN echo "postfix postfix/mailname string localhost" | debconf-set-selections && \
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections && \
DEBIAN_FRONTEND=noninteractive apt-get install postfix libsasl2-modules -y
# Set default work directory
ADD scripts/* /usr/local/bin/
RUN chmod +x /usr/local/bin/*
# Health check
RUN echo '#!/bin/bash' > /healthcheck && \
echo 'SCRIPT_NAME=/health SCRIPT_FILENAME=/health REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000 || exit 1' >> /healthcheck && \
chmod +x /healthcheck
# Clean up
RUN apt-get remove -y git && apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+423
View File
@@ -0,0 +1,423 @@
; Start a new pool named 'www'.
; the variable $pool can be used in any directive and will be replaced by the
; pool name ('www' here)
[www]
; Per pool prefix
; It only applies on the following directives:
; - 'access.log'
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or NONE) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = www-data
group = www-data
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 9000
; Set listen(2) backlog.
; Default Value: 511 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 511
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user
; mode is set to 0660
;listen.owner = www-data
;listen.group = www-data
;listen.mode = 0660
; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users =
;listen.acl_groups =
; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
; must be separated by a comma. If this value is left blank, connections will be
; accepted from any ip address.
; Default Value: any
;listen.allowed_clients = 127.0.0.1
; Specify the nice(2) priority to apply to the pool processes (only if set)
; The value can vary from -19 (highest priority) to 20 (lower priority)
; Note: - It will only work if the FPM master process is launched as root
; - The pool processes will inherit the master process priority
; unless it specified otherwise
; Default Value: no set
; process.priority = -19
; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user
; or group is differrent than the master process user. It allows to create process
; core dump and ptrace the process for the pool user.
; Default Value: no
; process.dumpable = yes
; Choose how the process manager will control the number of child processes.
; Possible Values:
; static - a fixed number (pm.max_children) of child processes;
; dynamic - the number of child processes are set dynamically based on the
; following directives. With this process management, there will be
; always at least 1 children.
; pm.max_children - the maximum number of children that can
; be alive at the same time.
; pm.start_servers - the number of children created on startup.
; pm.min_spare_servers - the minimum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is less than this
; number then some children will be created.
; pm.max_spare_servers - the maximum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is greater than this
; number then some children will be killed.
; ondemand - no children are created at startup. Children will be forked when
; new requests will connect. The following parameter are used:
; pm.max_children - the maximum number of children that
; can be alive at the same time.
; pm.process_idle_timeout - The number of seconds after which
; an idle process will be killed.
; Note: This value is mandatory.
pm = dynamic
; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI. The below defaults are based on a server without much resources. Don't
; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
; Note: This value is mandatory.
pm.max_children = 5
; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 2
; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 1
; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 3
; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to 'ondemand'
; Default Value: 10s
;pm.process_idle_timeout = 10s;
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500
; The URI to view the FPM status page. If this value is not set, no URI will be
; recognized as a status page. It shows the following informations:
; pool - the name of the pool;
; process manager - static, dynamic or ondemand;
; start time - the date and time FPM has started;
; start since - number of seconds since FPM has started;
; accepted conn - the number of request accepted by the pool;
; listen queue - the number of request in the queue of pending
; connections (see backlog in listen(2));
; max listen queue - the maximum number of requests in the queue
; of pending connections since FPM has started;
; listen queue len - the size of the socket queue of pending connections;
; idle processes - the number of idle processes;
; active processes - the number of active processes;
; total processes - the number of idle + active processes;
; max active processes - the maximum number of active processes since FPM
; has started;
; max children reached - number of times, the process limit has been reached,
; when pm tries to start more children (works only for
; pm 'dynamic' and 'ondemand');
; Value are updated in real time.
; Example output:
; pool: www
; process manager: static
; start time: 01/Jul/2011:17:53:49 +0200
; start since: 62636
; accepted conn: 190460
; listen queue: 0
; max listen queue: 1
; listen queue len: 42
; idle processes: 4
; active processes: 11
; total processes: 15
; max active processes: 12
; max children reached: 0
;
; By default the status page output is formatted as text/plain. Passing either
; 'html', 'xml' or 'json' in the query string will return the corresponding
; output syntax. Example:
; http://www.foo.bar/status
; http://www.foo.bar/status?json
; http://www.foo.bar/status?html
; http://www.foo.bar/status?xml
;
; By default the status page only outputs short status. Passing 'full' in the
; query string will also return status for each pool process.
; Example:
; http://www.foo.bar/status?full
; http://www.foo.bar/status?json&full
; http://www.foo.bar/status?html&full
; http://www.foo.bar/status?xml&full
; The Full status returns for each process:
; pid - the PID of the process;
; state - the state of the process (Idle, Running, ...);
; start time - the date and time the process has started;
; start since - the number of seconds since the process has started;
; requests - the number of requests the process has served;
; request duration - the duration in µs of the requests;
; request method - the request method (GET, POST, ...);
; request URI - the request URI with the query string;
; content length - the content length of the request (only with POST);
; user - the user (PHP_AUTH_USER) (or '-' if not set);
; script - the main script called (or '-' if not set);
; last request cpu - the %cpu the last request consumed
; it's always 0 if the process is not in Idle state
; because CPU calculation is done when the request
; processing has terminated;
; last request memory - the max amount of memory the last request consumed
; it's always 0 if the process is not in Idle state
; because memory calculation is done when the request
; processing has terminated;
; If the process is in Idle state, then informations are related to the
; last request the process has served. Otherwise informations are related to
; the current request being served.
; Example output:
; ************************
; pid: 31330
; state: Running
; start time: 01/Jul/2011:17:53:49 +0200
; start since: 63087
; requests: 12808
; request duration: 1250261
; request method: GET
; request URI: /test_mem.php?N=10000
; content length: 0
; user: -
; script: /home/fat/web/docs/php/test_mem.php
; last request cpu: 0.00
; last request memory: 0
;
; Note: There is a real-time FPM status monitoring sample web page available
; It's available in: /usr/local/share/php/fpm/status.html
;
; Note: The value must start with a leading slash (/). The value can be
; anything, but it may not be a good idea to use the .php extension or it
; may conflict with a real PHP file.
; Default Value: not set
pm.status_path = /status
; The ping URI to call the monitoring page of FPM. If this value is not set, no
; URI will be recognized as a ping page. This could be used to test from outside
; that FPM is alive and responding, or to
; - create a graph of FPM availability (rrd or such);
; - remove a server from a group if it is not responding (load balancing);
; - trigger alerts for the operating team (24/7).
; Note: The value must start with a leading slash (/). The value can be
; anything, but it may not be a good idea to use the .php extension or it
; may conflict with a real PHP file.
; Default Value: not set
ping.path = /health
; This directive may be used to customize the response of a ping request. The
; response is formatted as text/plain with a 200 response code.
; Default Value: pong
ping.response = OK
; The access log file
; Default: not set
;access.log = log/$pool.access.log
; The access log format.
; The following syntax is allowed
; %%: the '%' character
; %C: %CPU used by the request
; it can accept the following format:
; - %{user}C for user CPU only
; - %{system}C for system CPU only
; - %{total}C for user + system CPU (default)
; %d: time taken to serve the request
; it can accept the following format:
; - %{seconds}d (default)
; - %{miliseconds}d
; - %{mili}d
; - %{microseconds}d
; - %{micro}d
; %e: an environment variable (same as $_ENV or $_SERVER)
; it must be associated with embraces to specify the name of the env
; variable. Some exemples:
; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
; %f: script filename
; %l: content-length of the request (for POST request only)
; %m: request method
; %M: peak of memory allocated by PHP
; it can accept the following format:
; - %{bytes}M (default)
; - %{kilobytes}M
; - %{kilo}M
; - %{megabytes}M
; - %{mega}M
; %n: pool name
; %o: output header
; it must be associated with embraces to specify the name of the header:
; - %{Content-Type}o
; - %{X-Powered-By}o
; - %{Transfert-Encoding}o
; - ....
; %p: PID of the child that serviced the request
; %P: PID of the parent of the child that serviced the request
; %q: the query string
; %Q: the '?' character if query string exists
; %r: the request URI (without the query string, see %q and %Q)
; %R: remote IP address
; %s: status (response code)
; %t: server time the request was received
; it can accept a strftime(3) format:
; %d/%b/%Y:%H:%M:%S %z (default)
; The strftime(3) format must be encapsuled in a %{<strftime_format>}t tag
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
; %T: time the log has been written (the request has finished)
; it can accept a strftime(3) format:
; %d/%b/%Y:%H:%M:%S %z (default)
; The strftime(3) format must be encapsuled in a %{<strftime_format>}t tag
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
; %u: remote user
;
; Default: "%R - %u %t \"%m %r\" %s"
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
; The log file for slow requests
; Default Value: not set
; Note: slowlog is mandatory if request_slowlog_timeout is set
;slowlog = log/$pool.log.slow
; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_slowlog_timeout = 0
; Depth of slow log stack trace.
; Default Value: 20
;request_slowlog_trace_depth = 20
; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
request_terminate_timeout = 360
; Set open file descriptor rlimit.
; Default Value: system defined value
rlimit_files = 131072
; Set max core size rlimit.
; Possible Values: 'unlimited' or an integer greater or equal to 0
; Default Value: system defined value
rlimit_core = unlimited
; Chroot to this directory at the start. This value must be defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
; of its subdirectories. If the pool prefix is not set, the global prefix
; will be used instead.
; Note: chrooting is a great security feature and should be used whenever
; possible. However, all PHP paths will be relative to the chroot
; (error_log, sessions.save_path, ...).
; Default Value: not set
;chroot =
; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot
;chdir = /var/www
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
; pool configuration are added.
; Setting to "no" will make all environment variables available to PHP code
; via getenv(), $_ENV and $_SERVER.
; Default Value: yes
;clear_env = no
; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; execute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5 .php7
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
; the current environment.
; Default Value: clean env
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
; Additional php.ini defines, specific to this pool of workers. These settings
; overwrite the values previously defined in the php.ini. The directives are the
; same as the PHP SAPI:
; php_value/php_flag - you can set classic ini defines which can
; be overwritten from PHP call 'ini_set'.
; php_admin_value/php_admin_flag - these directives won't be overwritten by
; PHP call 'ini_set'
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
; Defining 'extension' will load the corresponding shared extension from
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
; overwrite previously defined php.ini values, but will append the new value
; instead.
; Note: path INI options can be relative and will be expanded with the prefix
; (pool, global or /usr/local)
; Default Value: nothing is defined by default except the values in php.ini and
; specified at startup with the -d argument
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
+13
View File
@@ -0,0 +1,13 @@
version: "3"
services:
php72:
image: registry.chiefsoft.net/php-fpm:7.2
build:
context: ./
dockerfile: Dockerfile
hostname: php72
container_name: php72
volumes:
- ./configs:/cfgs
env_file: .env
+15
View File
@@ -0,0 +1,15 @@
#!/bin/bash
if [ ! "$PHP_CRONTABS_PATH" == "" ]; then
printf "env CRONTABS_PATH: setting up crontabs: ";
for f in ${PHP_CRONTABS_PATH}; do
printf "$f, ";
rm -f /etc/cron.d/${f##*/}
cp $f /etc/cron.d/
chmod 0644 /etc/cron.d/${f##*/}
done
echo
touch /var/log/cron.log
printenv | grep -v "no_proxy" >> /etc/environment
/etc/init.d/cron start > /dev/null
fi
+68
View File
@@ -0,0 +1,68 @@
#!/bin/bash
echo "[`date +"%d-%b-%Y %T"`] PHP-FPM Docker container boot"
### create system user for php pool
if [ ! "$PHP_USER" == "" ] && [ ! "$PHP_UID" == "" ] && [ ! "$PHP_GID" == "" ] && [ ! "$PHP_HOME" == "" ]; then
echo "env PHP_USER: creating new system user: ${PHP_USER} ${PHP_UID}:${PHP_GID} ${PHP_HOME}"
mkdir -p $PHP_HOME && \
groupadd -f $PHP_USER -g $PHP_GID && \
useradd -d $PHP_HOME -u $PHP_UID -g $PHP_GID -s /usr/sbin/nologin $PHP_USER
fi
### load PHP ini configurations
if [ ! "$PHP_INI_PATH" == "" ]; then
printf "env PHP_INI_PATH: "
for f in ${PHP_INI_PATH}; do
printf "$f, ";
rm -f /usr/local/etc/php/conf.d/${f##*/}
cp $f /usr/local/etc/php/conf.d/
done
echo "into [ /usr/local/etc/php/conf.d/ ] folder..."
fi
### make sure to create clean php-fpm.conf
### to avoid adding multiple times the same lines next
### in case container is restarting
echo "[global]" > /usr/local/etc/php-fpm.conf
echo "include=etc/php-fpm.d/*.conf" >> /usr/local/etc/php-fpm.conf
### load PHP-FPM pool configurations
if [ ! "$PHP_POOL_PATH" == "" ]; then
printf "env PHP_POOL_PATH: "
for f in ${PHP_POOL_PATH}; do
printf "$f, ";
rm -f /usr/local/etc/php-fpm.d/${f##*/}
cp $f /usr/local/etc/php-fpm.d/
done
echo "into [ /usr/local/etc/php-fpm.d/ ] folder..."
fi
### load boot bash scripts
for f in /usr/local/bin/*.sh; do
/bin/bash -c $f
done
### load additional on-demand scripts
if [ ! -z ${PHP_BOOT_SCRIPTS+x} ] && [ "$PHP_BOOT_SCRIPTS" != "" ]; then
printf "env PHP_BOOT_SCRIPTS: "
for f in ${PHP_BOOT_SCRIPTS}; do
printf "$f, ";
rm -f /usr/local/bin/${f##*/}
cp $f /usr/local/bin/
chmod +x /usr/local/bin/${f##*/}
done
echo
for f in ${PHP_BOOT_SCRIPTS}; do
/bin/bash -c /usr/local/bin/${f##*/}
done
fi
### expose php version
echo
/usr/local/bin/php -v
@@ -0,0 +1,11 @@
#!/bin/sh
set -e
/usr/local/bin/docker-boot
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- php-fpm "$@"
fi
exec "$@"
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
if [ ! -z ${NEWRELIC_LICENSE+x} ] && [ "$NEWRELIC_LICENSE" != "" ] ; then
echo "env NEWRELIC_LICENSE: setting up newrelic license"
sed -i "s/REPLACE_WITH_REAL_KEY/$NEWRELIC_LICENSE/g" /usr/local/etc/php/conf.d/newrelic.ini
nrsysmond-config --set license_key=$NEWRELIC_LICENSE
service newrelic-sysmond start > /dev/null
chmod u+rw,g+rw,o+rw /var/log/newrelic/newrelic-daemon.log
else
rm -f /usr/local/etc/php/conf.d/newrelic.ini
fi
+39
View File
@@ -0,0 +1,39 @@
#!/usr/local/bin/php
<?php
/**
* This script is a sendmail wrapper for php to log calls of the php mail() function.
* Author: Till Brehm, www.ispconfig.org
* (Hopefully) secured by David Goodwin <david @ _palepurple_.co.uk>
* https://www.howtoforge.com/how-to-log-emails-sent-with-phps-mail-function-to-detect-form-spam
*/
$sendmail_bin = '/usr/sbin/sendmail';
// Get the email content
$mail = '';
$logline = '';
$pointer = fopen('php://stdin', 'r');
while ($line = fgets($pointer)) {
if (preg_match('/^to:/i', $line) || preg_match('/^from:/i', $line)) {
$logline .= trim($line) . ' ';
}
$mail .= $line;
}
// Compose the sendmail command
$command = 'echo ' . escapeshellarg($mail) . ' | ' . $sendmail_bin . ' -t -i';
if (isset($_SERVER['argc'])) {
for ($i = 1; $i < $_SERVER['argc']; $i++) {
$command .= escapeshellarg($_SERVER['argv'][$i]) . ' ';
}
}
// Write the log
$stdout = fopen('php://stdout', 'w');
fwrite($stdout, (isset($_ENV['USER']) ? $_ENV['USER'] . ' ' : '') . $logline . ' - ' . $command . "\n");
// Execute the command
return shell_exec($command);
+32
View File
@@ -0,0 +1,32 @@
#!/bin/bash
if [ ! -z ${SMTP_LOGIN+x} ] && [ ! -z ${SMTP_PASSWORD+x} ] && [ "$SMTP_LOGIN" != "" ] && [ "$SMTP_PASSWORD" != "" ]; then
echo "env SMTP_LOGIN: sendgrid credentials for email routing";
echo "[smtp.sendgrid.net]:2525 ${SMTP_LOGIN}:${SMTP_PASSWORD}" > /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd.db
rm /etc/postfix/sasl_passwd
### update email relay configuration for SendGrid
sed -i 's/default_transport = error//g' /etc/postfix/main.cf
sed -i 's/relay_transport = error//g' /etc/postfix/main.cf
### delete following lines if already exist before adding
sed -i '/relayhost/d' /etc/postfix/main.cf
sed -i '/smtp_tls_security_level/d' /etc/postfix/main.cf
sed -i '/smtp_sasl_auth_enable/d' /etc/postfix/main.cf
sed -i '/smtp_sasl_password_maps/d' /etc/postfix/main.cf
sed -i '/header_size_limit/d' /etc/postfix/main.cf
sed -i '/smtp_sasl_security_options/d' /etc/postfix/main.cf
### add following lines
echo "relayhost = [smtp.sendgrid.net]:2525" >> /etc/postfix/main.cf
echo "smtp_tls_security_level = encrypt" >> /etc/postfix/main.cf
echo "smtp_sasl_auth_enable = yes" >> /etc/postfix/main.cf
echo "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd" >> /etc/postfix/main.cf
echo "header_size_limit = 4096000" >> /etc/postfix/main.cf
echo "smtp_sasl_security_options = noanonymous" >> /etc/postfix/main.cf
/etc/init.d/postfix start > /dev/null
fi
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
### update PHP session handler
if [ ! "$PHP_SESSION_HANDLER" == "" ] && [ ! "$PHP_SESSION_PATH" == "" ]; then
echo "env PHP_SESSION_HANDLER: updating php session handler [ $PHP_SESSION_PATH ]"
echo "session.save_handler = $PHP_SESSION_HANDLER" > /usr/local/etc/php/conf.d/zz-session.ini
echo "session.save_path = \"$PHP_SESSION_PATH\"" >> /usr/local/etc/php/conf.d/zz-session.ini
fi
+17
View File
@@ -0,0 +1,17 @@
#!/bin/bash
if [ ! -z ${PHP_INI_SCAN_DIR+x} ] && [ "$PHP_INI_SCAN_DIR" != "" ] ; then
echo "env PHP_INI_SCAN_DIR: $PHP_INI_SCAN_DIR"
### break down path by : separator
IFS=':' read -ra DIRECTORIES <<< "$PHP_INI_SCAN_DIR"
for DIR in "${DIRECTORIES[@]}"; do
### check if there are any php pool configuration files to copy
COUNT=`ls -1 $DIR/*.conf 2>/dev/null | wc -l`
if [ $COUNT != "0" ] ; then
cp -f $DIR/*.conf /usr/local/etc/php-fpm.d/
fi
done
fi
+16
View File
@@ -0,0 +1,16 @@
PHP_UID=1000
PHP_GID=1000
PHP_HOME=/app
PHP_USER=php-fpm
# PHP_INI_SCAN_DIR=/cfgs:/usr/local/etc/php/conf.d
PHP_INI_PATH=/cfgs/php.ini
PHP_POOL_PATH=/cfgs/*/*-pool.conf
PHP_BOOT_SCRIPTS=/cfgs/start.sh
PHP_CRONTABS_PATH=/cfgs/cron
PHP_SESSION_HANDLER=redis
PHP_SESSION_PATH=tcp://redis.host:6379
# private
TEST_EMAIL=name@domain.com
NEWRELIC_LICENSE=newrelic_license
SENDGRID_API_KEY=sendgrid_api_key
+1
View File
@@ -0,0 +1 @@
.env
+156
View File
@@ -0,0 +1,156 @@
FROM php:7.3-fpm
RUN apt-get update -y
RUN apt-get -y install gcc make autoconf libc-dev pkg-config libzip-dev
RUN apt-get install -y --no-install-recommends \
git \
libmemcached-dev \
libz-dev \
libpq-dev \
libssl-dev libssl-doc libsasl2-dev \
libmcrypt-dev \
libxml2-dev \
zlib1g-dev libicu-dev g++ \
libldap2-dev libbz2-dev \
curl libcurl4-openssl-dev \
libenchant-dev libgmp-dev firebird-dev libib-util \
re2c libpng++-dev \
libwebp-dev libjpeg-dev libjpeg62-turbo-dev libpng-dev libxpm-dev libvpx-dev libfreetype6-dev \
libmagick++-dev \
libmagickwand-dev \
zlib1g-dev libgd-dev \
libtidy-dev libxslt1-dev libmagic-dev libexif-dev file \
sqlite3 libsqlite3-dev libxslt-dev \
libmhash2 libmhash-dev libc-client-dev libkrb5-dev libssh2-1-dev \
unzip libpcre3 libpcre3-dev \
poppler-utils ghostscript libmagickwand-6.q16-dev libsnmp-dev libedit-dev libreadline6-dev libsodium-dev \
freetds-bin freetds-dev freetds-common libct4 libsybdb5 tdsodbc libreadline-dev librecode-dev libpspell-dev
# fix for docker-php-ext-install pdo_dblib
# https://stackoverflow.com/questions/43617752/docker-php-and-freetds-cannot-find-freetds-in-know-installation-directories
RUN ln -s /usr/lib/x86_64-linux-gnu/libsybdb.so /usr/lib/
RUN docker-php-ext-configure hash --with-mhash && \
docker-php-ext-install hash
RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install imap iconv
RUN docker-php-ext-install bcmath bz2 calendar ctype curl dba dom enchant
RUN docker-php-ext-install fileinfo exif ftp gettext gmp
RUN docker-php-ext-install interbase intl json ldap mbstring mysqli
RUN docker-php-ext-install opcache pcntl pspell
RUN docker-php-ext-install pdo pdo_dblib pdo_mysql pdo_pgsql pdo_sqlite pgsql phar posix
RUN docker-php-ext-install readline recode
RUN docker-php-ext-install session shmop simplexml soap sockets sodium
RUN docker-php-ext-install sysvmsg sysvsem sysvshm
# RUN docker-php-ext-install snmp
# fix for docker-php-ext-install xmlreader
# https://github.com/docker-library/php/issues/373
RUN export CFLAGS="-I/usr/src/php" && docker-php-ext-install xmlreader xmlwriter xml xmlrpc xsl
RUN docker-php-ext-install tidy tokenizer wddx zend_test zip
# already build in... what they say...
# RUN docker-php-ext-install filter reflection spl standard
# RUN docker-php-ext-install pdo_firebird pdo_oci
# install pecl extension
RUN pecl install ds && \
pecl install imagick && \
pecl install igbinary && \
pecl install redis && \
pecl install memcached && \
docker-php-ext-enable ds imagick igbinary redis memcached
# https://serverpilot.io/docs/how-to-install-the-php-ssh2-extension
# pecl install ssh2-1.1.2 && \
# docker-php-ext-enable ssh2
# install pecl extension
RUN pecl install mongodb && docker-php-ext-enable mongodb
# install xdebug
# RUN pecl install xdebug && docker-php-ext-enable xdebug
RUN yes "" | pecl install msgpack && \
docker-php-ext-enable msgpack
# install APCu
RUN pecl install apcu && \
docker-php-ext-enable apcu --ini-name docker-php-ext-10-apcu.ini
RUN apt-get update -y && apt-get install -y apt-transport-https locales gnupg
# install MSSQL support and ODBC driver
# RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
# curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list && \
# export DEBIAN_FRONTEND=noninteractive && apt-get update -y && \
# ACCEPT_EULA=Y apt-get install -y msodbcsql unixodbc-dev
# RUN set -xe \
# && pecl install pdo_sqlsrv \
# && docker-php-ext-enable pdo_sqlsrv \
# && apt-get purge -y unixodbc-dev && apt-get autoremove -y && apt-get clean
# RUN docker-php-ext-configure spl && docker-php-ext-install spl
# install GD
RUN docker-php-ext-configure gd \
--with-png-dir \
--with-jpeg-dir \
--with-xpm-dir \
--with-webp-dir \
--with-freetype-dir \
&& docker-php-ext-install -j$(nproc) gd
# set locale to utf-8
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
#--------------------------------------------------------------------------
# Final Touches
#--------------------------------------------------------------------------
# install required libs for health check
RUN apt-get -y install libfcgi0ldbl nano htop iotop lsof cron mariadb-client redis-tools wget
# install composer
RUN EXPECTED_CHECKSUM="$(wget -q -O - https://composer.github.io/installer.sig)" && \
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" && \
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then >&2 echo 'ERROR: Invalid installer checksum' && exit 1; fi
RUN php composer-setup.php --quiet && rm composer-setup.php && \
mv composer.phar /usr/local/sbin/composer && \
chmod +x /usr/local/sbin/composer
# install NewRelic agent
RUN echo 'deb http://apt.newrelic.com/debian/ newrelic non-free' | tee /etc/apt/sources.list.d/newrelic.list && \
curl https://download.newrelic.com/548C16BF.gpg | apt-key add - && \
apt-get -y update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install newrelic-php5 newrelic-sysmond && \
export NR_INSTALL_SILENT=1 && newrelic-install install
# install SendGrid
RUN echo "postfix postfix/mailname string localhost" | debconf-set-selections && \
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections && \
DEBIAN_FRONTEND=noninteractive apt-get install postfix libsasl2-modules -y
# Set default work directory
ADD scripts/* /usr/local/bin/
RUN chmod +x /usr/local/bin/*
# Add default configuration files
ADD configs/php.ini /usr/local/etc/php/
ADD configs/www.conf /usr/local/etc/php-fpm.d/
# Health check
RUN echo '#!/bin/bash' > /healthcheck && \
echo 'env -i SCRIPT_NAME=/health SCRIPT_FILENAME=/health REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000 || exit 1' >> /healthcheck && \
chmod +x /healthcheck
# Clean up
RUN apt-get remove -y git && apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
WORKDIR /
+1
View File
@@ -0,0 +1 @@
* * * * * root /cfgs/job.sh
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
echo "[ cronjob task ] executed at `date`" > /proc/1/fd/2
File diff suppressed because it is too large Load Diff
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
echo "[ start.sh ] Boot script test..." > /proc/1/fd/2
+423
View File
@@ -0,0 +1,423 @@
; Start a new pool named 'www'.
; the variable $pool can be used in any directive and will be replaced by the
; pool name ('www' here)
[www]
; Per pool prefix
; It only applies on the following directives:
; - 'access.log'
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or NONE) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = www-data
group = www-data
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 9000
; Set listen(2) backlog.
; Default Value: 511 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 511
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user
; mode is set to 0660
;listen.owner = www-data
;listen.group = www-data
;listen.mode = 0660
; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users =
;listen.acl_groups =
; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
; must be separated by a comma. If this value is left blank, connections will be
; accepted from any ip address.
; Default Value: any
;listen.allowed_clients = 127.0.0.1
; Specify the nice(2) priority to apply to the pool processes (only if set)
; The value can vary from -19 (highest priority) to 20 (lower priority)
; Note: - It will only work if the FPM master process is launched as root
; - The pool processes will inherit the master process priority
; unless it specified otherwise
; Default Value: no set
; process.priority = -19
; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user
; or group is differrent than the master process user. It allows to create process
; core dump and ptrace the process for the pool user.
; Default Value: no
; process.dumpable = yes
; Choose how the process manager will control the number of child processes.
; Possible Values:
; static - a fixed number (pm.max_children) of child processes;
; dynamic - the number of child processes are set dynamically based on the
; following directives. With this process management, there will be
; always at least 1 children.
; pm.max_children - the maximum number of children that can
; be alive at the same time.
; pm.start_servers - the number of children created on startup.
; pm.min_spare_servers - the minimum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is less than this
; number then some children will be created.
; pm.max_spare_servers - the maximum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is greater than this
; number then some children will be killed.
; ondemand - no children are created at startup. Children will be forked when
; new requests will connect. The following parameter are used:
; pm.max_children - the maximum number of children that
; can be alive at the same time.
; pm.process_idle_timeout - The number of seconds after which
; an idle process will be killed.
; Note: This value is mandatory.
pm = dynamic
; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI. The below defaults are based on a server without much resources. Don't
; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
; Note: This value is mandatory.
pm.max_children = 5
; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 2
; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 1
; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 3
; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to 'ondemand'
; Default Value: 10s
;pm.process_idle_timeout = 10s;
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500
; The URI to view the FPM status page. If this value is not set, no URI will be
; recognized as a status page. It shows the following informations:
; pool - the name of the pool;
; process manager - static, dynamic or ondemand;
; start time - the date and time FPM has started;
; start since - number of seconds since FPM has started;
; accepted conn - the number of request accepted by the pool;
; listen queue - the number of request in the queue of pending
; connections (see backlog in listen(2));
; max listen queue - the maximum number of requests in the queue
; of pending connections since FPM has started;
; listen queue len - the size of the socket queue of pending connections;
; idle processes - the number of idle processes;
; active processes - the number of active processes;
; total processes - the number of idle + active processes;
; max active processes - the maximum number of active processes since FPM
; has started;
; max children reached - number of times, the process limit has been reached,
; when pm tries to start more children (works only for
; pm 'dynamic' and 'ondemand');
; Value are updated in real time.
; Example output:
; pool: www
; process manager: static
; start time: 01/Jul/2011:17:53:49 +0200
; start since: 62636
; accepted conn: 190460
; listen queue: 0
; max listen queue: 1
; listen queue len: 42
; idle processes: 4
; active processes: 11
; total processes: 15
; max active processes: 12
; max children reached: 0
;
; By default the status page output is formatted as text/plain. Passing either
; 'html', 'xml' or 'json' in the query string will return the corresponding
; output syntax. Example:
; http://www.foo.bar/status
; http://www.foo.bar/status?json
; http://www.foo.bar/status?html
; http://www.foo.bar/status?xml
;
; By default the status page only outputs short status. Passing 'full' in the
; query string will also return status for each pool process.
; Example:
; http://www.foo.bar/status?full
; http://www.foo.bar/status?json&full
; http://www.foo.bar/status?html&full
; http://www.foo.bar/status?xml&full
; The Full status returns for each process:
; pid - the PID of the process;
; state - the state of the process (Idle, Running, ...);
; start time - the date and time the process has started;
; start since - the number of seconds since the process has started;
; requests - the number of requests the process has served;
; request duration - the duration in µs of the requests;
; request method - the request method (GET, POST, ...);
; request URI - the request URI with the query string;
; content length - the content length of the request (only with POST);
; user - the user (PHP_AUTH_USER) (or '-' if not set);
; script - the main script called (or '-' if not set);
; last request cpu - the %cpu the last request consumed
; it's always 0 if the process is not in Idle state
; because CPU calculation is done when the request
; processing has terminated;
; last request memory - the max amount of memory the last request consumed
; it's always 0 if the process is not in Idle state
; because memory calculation is done when the request
; processing has terminated;
; If the process is in Idle state, then informations are related to the
; last request the process has served. Otherwise informations are related to
; the current request being served.
; Example output:
; ************************
; pid: 31330
; state: Running
; start time: 01/Jul/2011:17:53:49 +0200
; start since: 63087
; requests: 12808
; request duration: 1250261
; request method: GET
; request URI: /test_mem.php?N=10000
; content length: 0
; user: -
; script: /home/fat/web/docs/php/test_mem.php
; last request cpu: 0.00
; last request memory: 0
;
; Note: There is a real-time FPM status monitoring sample web page available
; It's available in: /usr/local/share/php/fpm/status.html
;
; Note: The value must start with a leading slash (/). The value can be
; anything, but it may not be a good idea to use the .php extension or it
; may conflict with a real PHP file.
; Default Value: not set
pm.status_path = /status
; The ping URI to call the monitoring page of FPM. If this value is not set, no
; URI will be recognized as a ping page. This could be used to test from outside
; that FPM is alive and responding, or to
; - create a graph of FPM availability (rrd or such);
; - remove a server from a group if it is not responding (load balancing);
; - trigger alerts for the operating team (24/7).
; Note: The value must start with a leading slash (/). The value can be
; anything, but it may not be a good idea to use the .php extension or it
; may conflict with a real PHP file.
; Default Value: not set
ping.path = /health
; This directive may be used to customize the response of a ping request. The
; response is formatted as text/plain with a 200 response code.
; Default Value: pong
ping.response = OK
; The access log file
; Default: not set
;access.log = log/$pool.access.log
; The access log format.
; The following syntax is allowed
; %%: the '%' character
; %C: %CPU used by the request
; it can accept the following format:
; - %{user}C for user CPU only
; - %{system}C for system CPU only
; - %{total}C for user + system CPU (default)
; %d: time taken to serve the request
; it can accept the following format:
; - %{seconds}d (default)
; - %{miliseconds}d
; - %{mili}d
; - %{microseconds}d
; - %{micro}d
; %e: an environment variable (same as $_ENV or $_SERVER)
; it must be associated with embraces to specify the name of the env
; variable. Some exemples:
; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
; %f: script filename
; %l: content-length of the request (for POST request only)
; %m: request method
; %M: peak of memory allocated by PHP
; it can accept the following format:
; - %{bytes}M (default)
; - %{kilobytes}M
; - %{kilo}M
; - %{megabytes}M
; - %{mega}M
; %n: pool name
; %o: output header
; it must be associated with embraces to specify the name of the header:
; - %{Content-Type}o
; - %{X-Powered-By}o
; - %{Transfert-Encoding}o
; - ....
; %p: PID of the child that serviced the request
; %P: PID of the parent of the child that serviced the request
; %q: the query string
; %Q: the '?' character if query string exists
; %r: the request URI (without the query string, see %q and %Q)
; %R: remote IP address
; %s: status (response code)
; %t: server time the request was received
; it can accept a strftime(3) format:
; %d/%b/%Y:%H:%M:%S %z (default)
; The strftime(3) format must be encapsuled in a %{<strftime_format>}t tag
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
; %T: time the log has been written (the request has finished)
; it can accept a strftime(3) format:
; %d/%b/%Y:%H:%M:%S %z (default)
; The strftime(3) format must be encapsuled in a %{<strftime_format>}t tag
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
; %u: remote user
;
; Default: "%R - %u %t \"%m %r\" %s"
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
; The log file for slow requests
; Default Value: not set
; Note: slowlog is mandatory if request_slowlog_timeout is set
;slowlog = log/$pool.log.slow
; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_slowlog_timeout = 0
; Depth of slow log stack trace.
; Default Value: 20
;request_slowlog_trace_depth = 20
; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
request_terminate_timeout = 360
; Set open file descriptor rlimit.
; Default Value: system defined value
rlimit_files = 131072
; Set max core size rlimit.
; Possible Values: 'unlimited' or an integer greater or equal to 0
; Default Value: system defined value
rlimit_core = unlimited
; Chroot to this directory at the start. This value must be defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
; of its subdirectories. If the pool prefix is not set, the global prefix
; will be used instead.
; Note: chrooting is a great security feature and should be used whenever
; possible. However, all PHP paths will be relative to the chroot
; (error_log, sessions.save_path, ...).
; Default Value: not set
;chroot =
; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot
;chdir = /var/www
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
; pool configuration are added.
; Setting to "no" will make all environment variables available to PHP code
; via getenv(), $_ENV and $_SERVER.
; Default Value: yes
;clear_env = no
; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; execute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5 .php7
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
; the current environment.
; Default Value: clean env
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
; Additional php.ini defines, specific to this pool of workers. These settings
; overwrite the values previously defined in the php.ini. The directives are the
; same as the PHP SAPI:
; php_value/php_flag - you can set classic ini defines which can
; be overwritten from PHP call 'ini_set'.
; php_admin_value/php_admin_flag - these directives won't be overwritten by
; PHP call 'ini_set'
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
; Defining 'extension' will load the corresponding shared extension from
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
; overwrite previously defined php.ini values, but will append the new value
; instead.
; Note: path INI options can be relative and will be expanded with the prefix
; (pool, global or /usr/local)
; Default Value: nothing is defined by default except the values in php.ini and
; specified at startup with the -d argument
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
+17
View File
@@ -0,0 +1,17 @@
version: "3"
services:
php73:
build:
context: ./
dockerfile: Dockerfile
depends_on:
- redis
hostname: php73
container_name: php73
volumes:
- ./configs:/cfgs
env_file: .env
redis:
image: redis:latest
+15
View File
@@ -0,0 +1,15 @@
#!/bin/bash
if [ ! "$PHP_CRONTABS_PATH" == "" ]; then
echo "env CRONTABS_PATH: setting up crontabs [ $PHP_CRONTABS_PATH ]:";
for f in ${PHP_CRONTABS_PATH}; do
echo " - $f";
rm -f /etc/cron.d/${f##*/}
cp $f /etc/cron.d/
chmod 0644 /etc/cron.d/${f##*/}
done
touch /var/log/cron.log
printenv | grep -v "no_proxy" >> /etc/default/locale
/etc/init.d/cron start > /dev/null
fi
+86
View File
@@ -0,0 +1,86 @@
#!/bin/bash
echo "[`date +"%d-%b-%Y %T"`] PHP-FPM Docker container boot"
### create system user for php pool
if [ ! "$PHP_USER" == "" ] && [ ! "$PHP_UID" == "" ] && [ ! "$PHP_GID" == "" ] && [ ! "$PHP_HOME" == "" ]; then
echo "env PHP_USER: creating new system user: ${PHP_USER} ${PHP_UID}:${PHP_GID} ${PHP_HOME}"
mkdir -p $PHP_HOME && \
groupadd -f $PHP_USER -g $PHP_GID && \
useradd -d $PHP_HOME -u $PHP_UID -g $PHP_GID -s /usr/sbin/nologin $PHP_USER
fi
### load PHP ini configurations
if [ ! "$PHP_INI_PATH" == "" ]; then
echo "env PHP_INI_PATH: copy from [ $PHP_INI_PATH ] into [ /usr/local/etc/php/conf.d/ ] folder"
for f in ${PHP_INI_PATH}; do
echo " - $f";
rm -f /usr/local/etc/php/conf.d/${f##*/}
cp $f /usr/local/etc/php/conf.d/
done
fi
### make sure to create clean php-fpm.conf
### to avoid adding multiple times the same lines next
### in case container is restarting
echo "[global]" > /usr/local/etc/php-fpm.conf
echo "include=etc/php-fpm.d/*.conf" >> /usr/local/etc/php-fpm.conf
### load PHP-FPM pool configurations
if [ ! "$PHP_POOL_PATH" == "" ]; then
echo "env PHP_POOL_PATH: copy from [ $PHP_POOL_PATH ] into [ /usr/local/etc/php-fpm.d/ ] folder"
for f in ${PHP_POOL_PATH}; do
echo " - $f";
rm -f /usr/local/etc/php-fpm.d/${f##*/}
cp $f /usr/local/etc/php-fpm.d/
done
fi
### scan for config files in folders from PHP_INI_SCAN_DIR
if [ ! -z ${PHP_INI_SCAN_DIR+x} ] && [ "$PHP_INI_SCAN_DIR" != "" ] ; then
echo "env PHP_INI_SCAN_DIR: copy from [ $PHP_INI_SCAN_DIR ] into [ /usr/local/etc/php-fpm.d/ ] folder"
### break down path by : separator
IFS=':' read -ra DIRECTORIES <<< "$PHP_INI_SCAN_DIR"
for DIR in "${DIRECTORIES[@]}"; do
### check if there are any php pool configuration files to copy
COUNT=`ls -1 $DIR/*.conf 2>/dev/null | wc -l`
if [ $COUNT != "0" ] ; then
echo " - $DIR/*.conf";
cp -f $DIR/*.conf /usr/local/etc/php-fpm.d/
fi
done
fi
### load boot bash scripts
for f in /usr/local/bin/*.sh; do
/bin/bash -c $f
done
### load additional on-demand scripts
if [ ! -z ${PHP_BOOT_SCRIPTS+x} ] && [ "$PHP_BOOT_SCRIPTS" != "" ]; then
echo "env PHP_BOOT_SCRIPTS: executing scripts in [ $PHP_BOOT_SCRIPTS ]"
for f in ${PHP_BOOT_SCRIPTS}; do
echo " - $f";
rm -f /usr/local/bin/${f##*/}
cp $f /usr/local/bin/
chmod +x /usr/local/bin/${f##*/}
done
for f in ${PHP_BOOT_SCRIPTS}; do
/bin/bash -c /usr/local/bin/${f##*/}
done
fi
### expose php version
echo
/usr/local/bin/php -v
@@ -0,0 +1,11 @@
#!/bin/sh
set -e
/usr/local/bin/docker-boot
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- php-fpm "$@"
fi
exec "$@"
+10
View File
@@ -0,0 +1,10 @@
<?php
if (isset($_SERVER['TEST_EMAIL']) && trim($_SERVER['TEST_EMAIL']) != "") {
$email = $_SERVER['TEST_EMAIL'];
$subject = "PHP email test script";
$message = "This is a test email to confirm that the PHP mail function works!";
$headers = "From: " . $email;
mail($email, $subject, $message, $headers);
}
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
if [ ! -z ${NEWRELIC_LICENSE+x} ] && [ "$NEWRELIC_LICENSE" != "" ] ; then
echo "env NEWRELIC_LICENSE: setting up newrelic license"
sed -i "s/REPLACE_WITH_REAL_KEY/$NEWRELIC_LICENSE/g" /usr/local/etc/php/conf.d/newrelic.ini
nrsysmond-config --set license_key=$NEWRELIC_LICENSE
service newrelic-sysmond start > /dev/null
chmod u+rw,g+rw,o+rw /var/log/newrelic/newrelic-daemon.log
else
rm -f /usr/local/etc/php/conf.d/newrelic.ini
fi
+38
View File
@@ -0,0 +1,38 @@
#!/usr/local/bin/php
<?php
/**
* This script is a sendmail wrapper for php to log calls of the php mail() function.
* Author: Till Brehm, www.ispconfig.org
* (Hopefully) secured by David Goodwin <david @ _palepurple_.co.uk>
* https://www.howtoforge.com/how-to-log-emails-sent-with-phps-mail-function-to-detect-form-spam
*/
$sendmail_bin = '/usr/sbin/sendmail';
// Get the email content
$mail = '';
$logline = '';
$pointer = fopen('php://stdin', 'r');
while ($line = fgets($pointer)) {
if (preg_match('/^to:/i', $line) || preg_match('/^from:/i', $line)) {
$logline .= trim($line) . ' ';
}
$mail .= $line;
}
// Compose the sendmail command
$command = 'echo ' . escapeshellarg($mail) . ' | ' . $sendmail_bin . ' -t -i';
if (isset($_SERVER['argc'])) {
for ($i = 1; $i < $_SERVER['argc']; $i++) {
$command .= escapeshellarg($_SERVER['argv'][$i]) . ' ';
}
}
// Write the log
error_log("Email sent: " . $logline);
// Execute the command
return shell_exec($command);
+38
View File
@@ -0,0 +1,38 @@
#!/bin/bash
if [ ! -z ${SENDGRID_API_KEY+x} ] && [ "$SENDGRID_API_KEY" != "" ]; then
echo "env SMTP_LOGIN: sendgrid credentials for email routing";
echo "[smtp.sendgrid.net]:2525 apikey:${SENDGRID_API_KEY}" > /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd.db
rm /etc/postfix/sasl_passwd
### update email relay configuration for SendGrid
sed -i 's/default_transport = error//g' /etc/postfix/main.cf
sed -i 's/relay_transport = error//g' /etc/postfix/main.cf
### delete following lines if already exist before adding
sed -i '/relayhost/d' /etc/postfix/main.cf
sed -i '/smtp_tls_security_level/d' /etc/postfix/main.cf
sed -i '/smtp_sasl_auth_enable/d' /etc/postfix/main.cf
sed -i '/smtp_sasl_password_maps/d' /etc/postfix/main.cf
sed -i '/header_size_limit/d' /etc/postfix/main.cf
sed -i '/smtp_sasl_security_options/d' /etc/postfix/main.cf
### add following lines
echo "relayhost = [smtp.sendgrid.net]:2525" >> /etc/postfix/main.cf
echo "smtp_tls_security_level = encrypt" >> /etc/postfix/main.cf
echo "smtp_sasl_auth_enable = yes" >> /etc/postfix/main.cf
echo "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd" >> /etc/postfix/main.cf
echo "header_size_limit = 4096000" >> /etc/postfix/main.cf
echo "smtp_sasl_security_options = noanonymous" >> /etc/postfix/main.cf
/etc/init.d/postfix start > /dev/null
### send test email if TEST_EMAIL env variable is set
if [ ! -z ${TEST_EMAIL+x} ] && [ "$TEST_EMAIL" != "" ]; then
echo " - sending test email to: [ $TEST_EMAIL ]";
php /usr/local/bin/emailtest.php
fi
fi
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
### update PHP session handler
if [ ! "$PHP_SESSION_HANDLER" == "" ] && [ ! "$PHP_SESSION_PATH" == "" ]; then
echo "env PHP_SESSION_HANDLER: updating php session handler [ $PHP_SESSION_PATH ]"
echo "session.save_handler = $PHP_SESSION_HANDLER" > /usr/local/etc/php/conf.d/zz-session.ini
echo "session.save_path = \"$PHP_SESSION_PATH\"" >> /usr/local/etc/php/conf.d/zz-session.ini
fi
+16
View File
@@ -0,0 +1,16 @@
PHP_UID=1000
PHP_GID=1000
PHP_HOME=/app
PHP_USER=php-fpm
# PHP_INI_SCAN_DIR=/cfgs:/usr/local/etc/php/conf.d
PHP_INI_PATH=/cfgs/php.ini
PHP_POOL_PATH=/cfgs/*/*-pool.conf
PHP_BOOT_SCRIPTS=/cfgs/start.sh
PHP_CRONTABS_PATH=/cfgs/cron
PHP_SESSION_HANDLER=redis
PHP_SESSION_PATH=tcp://redis.host:6379
# private
TEST_EMAIL=name@domain.com
NEWRELIC_LICENSE=newrelic_license
SENDGRID_API_KEY=sendgrid_api_key
+1
View File
@@ -0,0 +1 @@
.env
+158
View File
@@ -0,0 +1,158 @@
FROM php:7.4-fpm
RUN apt-get update -y
RUN apt-get -y install gcc make autoconf libc-dev pkg-config libzip-dev
RUN apt-get install -y --no-install-recommends \
git \
libmemcached-dev \
libz-dev \
libpq-dev \
libssl-dev libssl-doc libsasl2-dev \
libmcrypt-dev \
libxml2-dev \
zlib1g-dev libicu-dev g++ \
libldap2-dev libbz2-dev \
curl libcurl4-openssl-dev \
libenchant-2-dev libgmp-dev firebird-dev libib-util \
re2c libpng++-dev \
libwebp-dev libjpeg-dev libjpeg62-turbo-dev libpng-dev libxpm-dev libvpx-dev libfreetype6-dev \
libmagick++-dev \
libmagickwand-dev \
zlib1g-dev libgd-dev \
libtidy-dev libxslt1-dev libmagic-dev libexif-dev file \
sqlite3 libsqlite3-dev libxslt-dev \
libmhash2 libmhash-dev libc-client-dev libkrb5-dev libssh2-1-dev \
unzip libpcre3 libpcre3-dev \
poppler-utils ghostscript libmagickwand-6.q16-dev libsnmp-dev libedit-dev libreadline6-dev libsodium-dev \
freetds-bin freetds-dev freetds-common libct4 libsybdb5 tdsodbc libreadline-dev librecode-dev libpspell-dev libonig-dev
# fix for docker-php-ext-install pdo_dblib
# https://stackoverflow.com/questions/43617752/docker-php-and-freetds-cannot-find-freetds-in-know-installation-directories
RUN ln -s /usr/lib/x86_64-linux-gnu/libsybdb.so /usr/lib/
# RUN docker-php-ext-configure hash --with-mhash && \
# docker-php-ext-install hash
RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install imap iconv
RUN docker-php-ext-install bcmath bz2 calendar ctype curl dba dom
#enchant
RUN docker-php-ext-install fileinfo exif ftp gettext gmp
RUN docker-php-ext-install intl json ldap mbstring mysqli
RUN docker-php-ext-install opcache pcntl pspell
RUN docker-php-ext-install pdo pdo_dblib pdo_mysql pdo_pgsql pdo_sqlite pgsql phar posix
#RUN docker-php-ext-install readline
RUN docker-php-ext-install session shmop simplexml soap sockets sodium
RUN docker-php-ext-install sysvmsg sysvsem sysvshm
# RUN docker-php-ext-install snmp
# fix for docker-php-ext-install xmlreader
# https://github.com/docker-library/php/issues/373
RUN export CFLAGS="-I/usr/src/php" && docker-php-ext-install xmlreader xmlwriter xml xmlrpc xsl
RUN docker-php-ext-install tidy tokenizer zend_test zip
# already build in... what they say...
# RUN docker-php-ext-install filter reflection spl standard
# RUN docker-php-ext-install pdo_firebird pdo_oci
# install pecl extension
RUN pecl install ds && \
pecl install imagick && \
pecl install igbinary && \
pecl install memcached && \
pecl install redis-5.1.0 && \
pecl install mcrypt-1.0.3 && \
docker-php-ext-enable ds imagick igbinary redis memcached
# https://serverpilot.io/docs/how-to-install-the-php-ssh2-extension
# pecl install ssh2-1.1.2 && \
# docker-php-ext-enable ssh2
# install pecl extension
RUN pecl install mongodb && docker-php-ext-enable mongodb
# install xdebug
# RUN pecl install xdebug && docker-php-ext-enable xdebug
RUN yes "" | pecl install msgpack && \
docker-php-ext-enable msgpack
# install APCu
RUN pecl install apcu && \
docker-php-ext-enable apcu --ini-name docker-php-ext-10-apcu.ini
RUN apt-get update -y && apt-get install -y apt-transport-https locales gnupg
# install MSSQL support and ODBC driver
# RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
# curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list && \
# export DEBIAN_FRONTEND=noninteractive && apt-get update -y && \
# ACCEPT_EULA=Y apt-get install -y msodbcsql unixodbc-dev
# RUN set -xe \
# && pecl install pdo_sqlsrv \
# && docker-php-ext-enable pdo_sqlsrv \
# && apt-get purge -y unixodbc-dev && apt-get autoremove -y && apt-get clean
# RUN docker-php-ext-configure spl && docker-php-ext-install spl
# install GD
RUN docker-php-ext-configure gd \
# --with-png \
--with-jpeg \
--with-xpm \
--with-webp \
--with-freetype \
&& docker-php-ext-install -j$(nproc) gd
# set locale to utf-8
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
#--------------------------------------------------------------------------
# Final Touches
#--------------------------------------------------------------------------
# install required libs for health check
RUN apt-get -y install libfcgi0ldbl nano htop iotop lsof cron mariadb-client redis-tools wget
# install composer
RUN EXPECTED_CHECKSUM="$(wget -q -O - https://composer.github.io/installer.sig)" && \
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" && \
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then >&2 echo 'ERROR: Invalid installer checksum' && exit 1; fi
RUN php composer-setup.php --quiet && rm composer-setup.php && \
mv composer.phar /usr/local/sbin/composer && \
chmod +x /usr/local/sbin/composer
# install NewRelic agent
RUN echo 'deb http://apt.newrelic.com/debian/ newrelic non-free' | tee /etc/apt/sources.list.d/newrelic.list && \
curl https://download.newrelic.com/548C16BF.gpg | apt-key add - && \
apt-get -y update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install newrelic-php5 newrelic-sysmond && \
export NR_INSTALL_SILENT=1 && newrelic-install install
# install SendGrid
RUN echo "postfix postfix/mailname string localhost" | debconf-set-selections && \
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections && \
DEBIAN_FRONTEND=noninteractive apt-get install postfix libsasl2-modules -y
# Set default work directory
ADD scripts/* /usr/local/bin/
RUN chmod +x /usr/local/bin/*
# Add default configuration files
ADD configs/php.ini /usr/local/etc/php/
ADD configs/www.conf /usr/local/etc/php-fpm.d/
# Health check
RUN echo '#!/bin/bash' > /healthcheck && \
echo 'env -i SCRIPT_NAME=/health SCRIPT_FILENAME=/health REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000 || exit 1' >> /healthcheck && \
chmod +x /healthcheck
# Clean up
RUN apt-get remove -y git && apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
WORKDIR /
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
* * * * * root /cfgs/job.sh
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
echo "[ cronjob task ] executed at `date`" > /proc/1/fd/2
File diff suppressed because it is too large Load Diff
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
echo "[ start.sh ] Boot script test..." > /proc/1/fd/2
+423
View File
@@ -0,0 +1,423 @@
; Start a new pool named 'www'.
; the variable $pool can be used in any directive and will be replaced by the
; pool name ('www' here)
[www]
; Per pool prefix
; It only applies on the following directives:
; - 'access.log'
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or NONE) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = www-data
group = www-data
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 9000
; Set listen(2) backlog.
; Default Value: 511 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 511
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user
; mode is set to 0660
;listen.owner = www-data
;listen.group = www-data
;listen.mode = 0660
; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users =
;listen.acl_groups =
; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
; must be separated by a comma. If this value is left blank, connections will be
; accepted from any ip address.
; Default Value: any
;listen.allowed_clients = 127.0.0.1
; Specify the nice(2) priority to apply to the pool processes (only if set)
; The value can vary from -19 (highest priority) to 20 (lower priority)
; Note: - It will only work if the FPM master process is launched as root
; - The pool processes will inherit the master process priority
; unless it specified otherwise
; Default Value: no set
; process.priority = -19
; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user
; or group is differrent than the master process user. It allows to create process
; core dump and ptrace the process for the pool user.
; Default Value: no
; process.dumpable = yes
; Choose how the process manager will control the number of child processes.
; Possible Values:
; static - a fixed number (pm.max_children) of child processes;
; dynamic - the number of child processes are set dynamically based on the
; following directives. With this process management, there will be
; always at least 1 children.
; pm.max_children - the maximum number of children that can
; be alive at the same time.
; pm.start_servers - the number of children created on startup.
; pm.min_spare_servers - the minimum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is less than this
; number then some children will be created.
; pm.max_spare_servers - the maximum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is greater than this
; number then some children will be killed.
; ondemand - no children are created at startup. Children will be forked when
; new requests will connect. The following parameter are used:
; pm.max_children - the maximum number of children that
; can be alive at the same time.
; pm.process_idle_timeout - The number of seconds after which
; an idle process will be killed.
; Note: This value is mandatory.
pm = dynamic
; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI. The below defaults are based on a server without much resources. Don't
; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
; Note: This value is mandatory.
pm.max_children = 5
; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 2
; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 1
; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 3
; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to 'ondemand'
; Default Value: 10s
;pm.process_idle_timeout = 10s;
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500
; The URI to view the FPM status page. If this value is not set, no URI will be
; recognized as a status page. It shows the following informations:
; pool - the name of the pool;
; process manager - static, dynamic or ondemand;
; start time - the date and time FPM has started;
; start since - number of seconds since FPM has started;
; accepted conn - the number of request accepted by the pool;
; listen queue - the number of request in the queue of pending
; connections (see backlog in listen(2));
; max listen queue - the maximum number of requests in the queue
; of pending connections since FPM has started;
; listen queue len - the size of the socket queue of pending connections;
; idle processes - the number of idle processes;
; active processes - the number of active processes;
; total processes - the number of idle + active processes;
; max active processes - the maximum number of active processes since FPM
; has started;
; max children reached - number of times, the process limit has been reached,
; when pm tries to start more children (works only for
; pm 'dynamic' and 'ondemand');
; Value are updated in real time.
; Example output:
; pool: www
; process manager: static
; start time: 01/Jul/2011:17:53:49 +0200
; start since: 62636
; accepted conn: 190460
; listen queue: 0
; max listen queue: 1
; listen queue len: 42
; idle processes: 4
; active processes: 11
; total processes: 15
; max active processes: 12
; max children reached: 0
;
; By default the status page output is formatted as text/plain. Passing either
; 'html', 'xml' or 'json' in the query string will return the corresponding
; output syntax. Example:
; http://www.foo.bar/status
; http://www.foo.bar/status?json
; http://www.foo.bar/status?html
; http://www.foo.bar/status?xml
;
; By default the status page only outputs short status. Passing 'full' in the
; query string will also return status for each pool process.
; Example:
; http://www.foo.bar/status?full
; http://www.foo.bar/status?json&full
; http://www.foo.bar/status?html&full
; http://www.foo.bar/status?xml&full
; The Full status returns for each process:
; pid - the PID of the process;
; state - the state of the process (Idle, Running, ...);
; start time - the date and time the process has started;
; start since - the number of seconds since the process has started;
; requests - the number of requests the process has served;
; request duration - the duration in µs of the requests;
; request method - the request method (GET, POST, ...);
; request URI - the request URI with the query string;
; content length - the content length of the request (only with POST);
; user - the user (PHP_AUTH_USER) (or '-' if not set);
; script - the main script called (or '-' if not set);
; last request cpu - the %cpu the last request consumed
; it's always 0 if the process is not in Idle state
; because CPU calculation is done when the request
; processing has terminated;
; last request memory - the max amount of memory the last request consumed
; it's always 0 if the process is not in Idle state
; because memory calculation is done when the request
; processing has terminated;
; If the process is in Idle state, then informations are related to the
; last request the process has served. Otherwise informations are related to
; the current request being served.
; Example output:
; ************************
; pid: 31330
; state: Running
; start time: 01/Jul/2011:17:53:49 +0200
; start since: 63087
; requests: 12808
; request duration: 1250261
; request method: GET
; request URI: /test_mem.php?N=10000
; content length: 0
; user: -
; script: /home/fat/web/docs/php/test_mem.php
; last request cpu: 0.00
; last request memory: 0
;
; Note: There is a real-time FPM status monitoring sample web page available
; It's available in: /usr/local/share/php/fpm/status.html
;
; Note: The value must start with a leading slash (/). The value can be
; anything, but it may not be a good idea to use the .php extension or it
; may conflict with a real PHP file.
; Default Value: not set
pm.status_path = /status
; The ping URI to call the monitoring page of FPM. If this value is not set, no
; URI will be recognized as a ping page. This could be used to test from outside
; that FPM is alive and responding, or to
; - create a graph of FPM availability (rrd or such);
; - remove a server from a group if it is not responding (load balancing);
; - trigger alerts for the operating team (24/7).
; Note: The value must start with a leading slash (/). The value can be
; anything, but it may not be a good idea to use the .php extension or it
; may conflict with a real PHP file.
; Default Value: not set
ping.path = /health
; This directive may be used to customize the response of a ping request. The
; response is formatted as text/plain with a 200 response code.
; Default Value: pong
ping.response = OK
; The access log file
; Default: not set
;access.log = log/$pool.access.log
; The access log format.
; The following syntax is allowed
; %%: the '%' character
; %C: %CPU used by the request
; it can accept the following format:
; - %{user}C for user CPU only
; - %{system}C for system CPU only
; - %{total}C for user + system CPU (default)
; %d: time taken to serve the request
; it can accept the following format:
; - %{seconds}d (default)
; - %{miliseconds}d
; - %{mili}d
; - %{microseconds}d
; - %{micro}d
; %e: an environment variable (same as $_ENV or $_SERVER)
; it must be associated with embraces to specify the name of the env
; variable. Some exemples:
; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
; %f: script filename
; %l: content-length of the request (for POST request only)
; %m: request method
; %M: peak of memory allocated by PHP
; it can accept the following format:
; - %{bytes}M (default)
; - %{kilobytes}M
; - %{kilo}M
; - %{megabytes}M
; - %{mega}M
; %n: pool name
; %o: output header
; it must be associated with embraces to specify the name of the header:
; - %{Content-Type}o
; - %{X-Powered-By}o
; - %{Transfert-Encoding}o
; - ....
; %p: PID of the child that serviced the request
; %P: PID of the parent of the child that serviced the request
; %q: the query string
; %Q: the '?' character if query string exists
; %r: the request URI (without the query string, see %q and %Q)
; %R: remote IP address
; %s: status (response code)
; %t: server time the request was received
; it can accept a strftime(3) format:
; %d/%b/%Y:%H:%M:%S %z (default)
; The strftime(3) format must be encapsuled in a %{<strftime_format>}t tag
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
; %T: time the log has been written (the request has finished)
; it can accept a strftime(3) format:
; %d/%b/%Y:%H:%M:%S %z (default)
; The strftime(3) format must be encapsuled in a %{<strftime_format>}t tag
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
; %u: remote user
;
; Default: "%R - %u %t \"%m %r\" %s"
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
; The log file for slow requests
; Default Value: not set
; Note: slowlog is mandatory if request_slowlog_timeout is set
;slowlog = log/$pool.log.slow
; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_slowlog_timeout = 0
; Depth of slow log stack trace.
; Default Value: 20
;request_slowlog_trace_depth = 20
; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
request_terminate_timeout = 360
; Set open file descriptor rlimit.
; Default Value: system defined value
rlimit_files = 131072
; Set max core size rlimit.
; Possible Values: 'unlimited' or an integer greater or equal to 0
; Default Value: system defined value
rlimit_core = unlimited
; Chroot to this directory at the start. This value must be defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
; of its subdirectories. If the pool prefix is not set, the global prefix
; will be used instead.
; Note: chrooting is a great security feature and should be used whenever
; possible. However, all PHP paths will be relative to the chroot
; (error_log, sessions.save_path, ...).
; Default Value: not set
;chroot =
; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot
;chdir = /var/www
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
; pool configuration are added.
; Setting to "no" will make all environment variables available to PHP code
; via getenv(), $_ENV and $_SERVER.
; Default Value: yes
;clear_env = no
; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; execute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5 .php7
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
; the current environment.
; Default Value: clean env
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
; Additional php.ini defines, specific to this pool of workers. These settings
; overwrite the values previously defined in the php.ini. The directives are the
; same as the PHP SAPI:
; php_value/php_flag - you can set classic ini defines which can
; be overwritten from PHP call 'ini_set'.
; php_admin_value/php_admin_flag - these directives won't be overwritten by
; PHP call 'ini_set'
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
; Defining 'extension' will load the corresponding shared extension from
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
; overwrite previously defined php.ini values, but will append the new value
; instead.
; Note: path INI options can be relative and will be expanded with the prefix
; (pool, global or /usr/local)
; Default Value: nothing is defined by default except the values in php.ini and
; specified at startup with the -d argument
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
+15
View File
@@ -0,0 +1,15 @@
version: "3"
services:
php74:
image: registry.chiefsoft.net/php-fpm:7.4
build:
context: ./
platforms:
- "linux/amd64"
dockerfile: Dockerfile
hostname: php72
container_name: php72
volumes:
- ./configs:/cfgs
env_file: .env
+15
View File
@@ -0,0 +1,15 @@
#!/bin/bash
if [ ! "$PHP_CRONTABS_PATH" == "" ]; then
echo "env CRONTABS_PATH: setting up crontabs [ $PHP_CRONTABS_PATH ]:";
for f in ${PHP_CRONTABS_PATH}; do
echo " - $f";
rm -f /etc/cron.d/${f##*/}
cp $f /etc/cron.d/
chmod 0644 /etc/cron.d/${f##*/}
done
touch /var/log/cron.log
printenv | grep -v "no_proxy" >> /etc/default/locale
/etc/init.d/cron start > /dev/null
fi
+86
View File
@@ -0,0 +1,86 @@
#!/bin/bash
echo "[`date +"%d-%b-%Y %T"`] PHP-FPM Docker container boot"
### create system user for php pool
if [ ! "$PHP_USER" == "" ] && [ ! "$PHP_UID" == "" ] && [ ! "$PHP_GID" == "" ] && [ ! "$PHP_HOME" == "" ]; then
echo "env PHP_USER: creating new system user: ${PHP_USER} ${PHP_UID}:${PHP_GID} ${PHP_HOME}"
mkdir -p $PHP_HOME && \
groupadd -f $PHP_USER -g $PHP_GID && \
useradd -d $PHP_HOME -u $PHP_UID -g $PHP_GID -s /usr/sbin/nologin $PHP_USER
fi
### load PHP ini configurations
if [ ! "$PHP_INI_PATH" == "" ]; then
echo "env PHP_INI_PATH: copy from [ $PHP_INI_PATH ] into [ /usr/local/etc/php/conf.d/ ] folder"
for f in ${PHP_INI_PATH}; do
echo " - $f";
rm -f /usr/local/etc/php/conf.d/${f##*/}
cp $f /usr/local/etc/php/conf.d/
done
fi
### make sure to create clean php-fpm.conf
### to avoid adding multiple times the same lines next
### in case container is restarting
echo "[global]" > /usr/local/etc/php-fpm.conf
echo "include=etc/php-fpm.d/*.conf" >> /usr/local/etc/php-fpm.conf
### load PHP-FPM pool configurations
if [ ! "$PHP_POOL_PATH" == "" ]; then
echo "env PHP_POOL_PATH: copy from [ $PHP_POOL_PATH ] into [ /usr/local/etc/php-fpm.d/ ] folder"
for f in ${PHP_POOL_PATH}; do
echo " - $f";
rm -f /usr/local/etc/php-fpm.d/${f##*/}
cp $f /usr/local/etc/php-fpm.d/
done
fi
### scan for config files in folders from PHP_INI_SCAN_DIR
if [ ! -z ${PHP_INI_SCAN_DIR+x} ] && [ "$PHP_INI_SCAN_DIR" != "" ] ; then
echo "env PHP_INI_SCAN_DIR: copy from [ $PHP_INI_SCAN_DIR ] into [ /usr/local/etc/php-fpm.d/ ] folder"
### break down path by : separator
IFS=':' read -ra DIRECTORIES <<< "$PHP_INI_SCAN_DIR"
for DIR in "${DIRECTORIES[@]}"; do
### check if there are any php pool configuration files to copy
COUNT=`ls -1 $DIR/*.conf 2>/dev/null | wc -l`
if [ $COUNT != "0" ] ; then
echo " - $DIR/*.conf";
cp -f $DIR/*.conf /usr/local/etc/php-fpm.d/
fi
done
fi
### load boot bash scripts
for f in /usr/local/bin/*.sh; do
/bin/bash -c $f
done
### load additional on-demand scripts
if [ ! -z ${PHP_BOOT_SCRIPTS+x} ] && [ "$PHP_BOOT_SCRIPTS" != "" ]; then
echo "env PHP_BOOT_SCRIPTS: executing scripts in [ $PHP_BOOT_SCRIPTS ]"
for f in ${PHP_BOOT_SCRIPTS}; do
echo " - $f";
rm -f /usr/local/bin/${f##*/}
cp $f /usr/local/bin/
chmod +x /usr/local/bin/${f##*/}
done
for f in ${PHP_BOOT_SCRIPTS}; do
/bin/bash -c /usr/local/bin/${f##*/}
done
fi
### expose php version
echo
/usr/local/bin/php -v
@@ -0,0 +1,11 @@
#!/bin/sh
set -e
/usr/local/bin/docker-boot
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- php-fpm "$@"
fi
exec "$@"
+10
View File
@@ -0,0 +1,10 @@
<?php
if (isset($_SERVER['TEST_EMAIL']) && trim($_SERVER['TEST_EMAIL']) != "") {
$email = $_SERVER['TEST_EMAIL'];
$subject = "PHP email test script";
$message = "This is a test email to confirm that the PHP mail function works!";
$headers = "From: " . $email;
mail($email, $subject, $message, $headers);
}
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
if [ ! -z ${NEWRELIC_LICENSE+x} ] && [ "$NEWRELIC_LICENSE" != "" ] ; then
echo "env NEWRELIC_LICENSE: setting up newrelic license"
sed -i "s/REPLACE_WITH_REAL_KEY/$NEWRELIC_LICENSE/g" /usr/local/etc/php/conf.d/newrelic.ini
nrsysmond-config --set license_key=$NEWRELIC_LICENSE
service newrelic-sysmond start > /dev/null
chmod u+rw,g+rw,o+rw /var/log/newrelic/newrelic-daemon.log
else
rm -f /usr/local/etc/php/conf.d/newrelic.ini
fi

Some files were not shown because too many files have changed in this diff Show More