วิธีป้องกันการ Download Source Code ผ่าน Extension บน Business Central On-Premises

Spread the love

สำหรับ Developer ที่พัฒนา Extension กับ Dynamics 365 Business Central แบบ On-Premise แน่นอนว่าคงไม่มีใครอยากให้คนอื่นที่ไม่ใช่คนในทีม หรือในองค์กรเดียวกันมาเห็น source code ของเราใช่ไหมละครับ

แล้ววิธีที่เราจะป้องกันไม่ให้คนอื่นสามารถเอา source code จาก AL Extension ของเราไปได้นั้น สามารถทำได้อย่างไร ไปเริ่มกันเลยครับ

บทความที่คุณอาจสนใจ

Publish และ Install Extension แล้ว Web Client ไม่ Start up
ขั้นตอนการติดตั้ง AL Extension บน Visual Studio Code สำหรับ Dynamics 365 Business Central

ShowMyCode Property

ก่อนอื่นผมจะสร้าง Project ขึ้นมา 1 ตัว ขอตั้งชื่อว่า TestRuntimePackage และมี source code ข้างในตามรูปด้านล่างนี้นะครับ

prevent-downloading-source-business-central-1

จากนั้นก็กด Ctrl + F5 เพื่อ Publish Extension ของเรา ขึ้นไปบน Server ได้เลย

เมื่อไปที่หน้า Extension Management จากเห็นว่า Extension ของเราที่ชื่อ TestRuntimePackage ได้ติดตั้งไว้แล้ว

prevent-downloading-source-business-central-2

ทีนี้ถ้าเราคลิกที่ Manage จะมี action ว่า Download Source ขึ้นมา

prevent-downloading-source-business-central-3

เพียงแค่คลิกที่ Download Source ก็จะได้ source code ทั้งหมดออกมา

prevent-downloading-source-business-central-4

เรามาลอง extract zip file นี้ดูกัน

prevent-downloading-source-business-central-5

ได้ source code ออกมาหมดเลย แล้วจะป้องกันการ Download Source ยังไงละ ง่ายมาก ดูวิธีด้านล่างได้เลย

ย้อนกลับมาที่ไฟล์ app.json จะมี property ตัวหนึ่งคือ showMyCode เมื่อเราสร้าง project ขึ้นมา ค่าจะถูก default ให้เป็น true

prevent-downloading-source-business-central-6

ซึ่งการทำงานก็คือจะทำให้สามารถ Download Source ได้เหมือนที่เห็นจากข้างบน ถ้าไม่อยากให้ Download Source ได้ก็เปลี่ยนจาก true เป็น false ได้เลย

prevent-downloading-source-business-central-7

เมื่อกด Ctrl + F5 เพื่อ compile extension แล้วไปดูที่หน้า Extension Management กัน

prevent-downloading-source-business-central-8

จากรูปด้านบนจะเห็นว่าปุ่ม Download Source เป็นสีเทาแล้ว ซึ่งไม่สามารถกดเพื่อดู source code ได้แน่นอน

บทความที่คุณอาจสนใจ

• เริ่มต้นสร้าง Extension แรกบน Dynamics 365 BC ตอนที่ 1 – New Table
TXT2AL: How to Convert C/AL to AL

แต่เท่านี้ยังไม่พอ!!

เพราะไฟล์ runtime package ที่เรา build ออกมาเพื่อนำไป install ที่ production server เนี้ย สามารถ Extract หรือที่เรียกกันว่าแตก zip ออกมาดู source code ข้างในได้เลย

ผมจะลอง Extract ไฟล์ runtime package หรือ ไฟล์ .app ให้ดู

prevent-downloading-source-business-central-9

นี่ไง ได้ source code ออกมาครบเลย

prevent-downloading-source-business-central-10

แต่ก็มีวิธี build ไฟล์ runtime package ออกมาโดยป้องกันไม่ให้ Extract ไฟล์หรือแตก zip เพื่อเอา source code ไปดูวิธีกันเลย

ป้องกันการ Extract Source Code จาก Runtime Package

โดยทั่วไปเราจะไม่ใช้ไฟล์ runtime package ที่ถูก build ออกมาจาก visual code ก็เพราะว่ามันดู code ได้ไงละ แต่จะใช้คำสั่ง Get-NAVAppRuntimePackage เพื่อสร้างไฟล์ runtime package ออกมาจาก extension ที่ถูก publish และ install ไว้บน system แทน

เมื่อ extension ที่ต้องการถูกติดตั้งบนระบบแล้ว ก็ให้เปิดโปรแกรม Business Central Administration Shell ขึ้นมา

prevent-downloading-source-business-central-11

และจะใช้คำสั่งด้านล่างนี้เพื่อสร้างไฟล์ runtime package หรือ ไฟล์ .app ออกมาจากระบบ

Get-NAVAppRuntimePackage -ServerInstance BC150 -AppName 'TestRuntimePackage' -Version 1.0.0.0 -ExtensionPath 'D:\AMADDEV\app\AMADDEV_TestRuntimePackage_1.0.0.0.app'
  • ServerInstance: ชื่อ instance
  • AppName: ชื่อของ app ดูได้จาก “name” ที่ไฟล์ app.json
  • Version: เลข version ของ app ดูได้จาก “version” ที่ไฟล์ app.json
  • ExtenionPath: directory และ ชื่อของ runtime package ที่คุณต้องการตั้ง ตัวอย่างนี้คือผมจะให้ไฟล์ชื่อว่า AMADDEV_TestRuntimePackage_1.0.0.0.app และจากวางไฟล์ไว้ที่ D:\AMADDEV\app\
prevent-downloading-source-business-central-12

เมื่อ run คำสั่งแล้วไม่เกิด error อะไรก็เข้าไปดูใน path ที่เราตั้งไว้เลย

prevent-downloading-source-business-central-13

จะได้ไฟล์ runtime package ออกมา งั้นเดี๋ยวเรามาลองแตก zip ไฟล์นี้กัน

prevent-downloading-source-business-central-14

จะเห็นว่าไม่สามารถแตก zip ไฟล์ได้ เพียงเท่านี้ source code ของคุณก็ปลอดภัยแล้ว ผมขอจบบทความไว้เพียงเท่านี้ แล้วเจอกันใหม่ในบทความหน้า สวัสดีครับ

ERP Consultant ที่อยากแชร์ความรู้เกี่ยวกับการพัฒนาโปรแกรม Microsoft Dynamics NAV / 365 Business Central ทั้งทางด้าน Business และ Technical ให้กับเหล่านักศึกษา, ผู้ที่เริ่มต้นอาชีพนี้ หรือต้องการที่จะเพิ่มเติมความรู้ด้าน ERP ในรูปแบบ blog ที่เป็นภาษาไทย Contact: amaddev90@gmail.com

Leave a Reply

Your email address will not be published. Required fields are marked *