ขณะนี้ฉันกำลังทำงานกับแอปโปรเจ็กต์ด้านเล็กที่ใช้โปรแกรมดูไฟล์เพื่อตรวจสอบโฟลเดอร์ที่ระบุสำหรับการเปลี่ยนแปลง หนึ่งในการใช้งานทั่วไปของแอพคือการแชร์เครือข่าย เช่น การแชร์แซมบ้า ตัวอย่างหนึ่งของการใช้งานเหล่านี้คือ:
- ไคลเอนต์ Windows หนึ่งเครื่อง
- ไคลเอนต์ MacOS หนึ่งเครื่อง
- ไคลเอ็นต์ Linux หนึ่งเครื่อง
- เซิร์ฟเวอร์ Ubuntu หนึ่งเครื่องที่ใช้บริการ Samba
เมื่อไคลเอ็นต์ Windows เพิ่มไฟล์ลงในการแชร์ เฉพาะไคลเอ็นต์ MacOS และไคลเอ็นต์ Linux เท่านั้นที่จะได้รับการแจ้งเตือน อย่างไรก็ตาม โปรแกรมตรวจสอบไฟล์ในแต่ละไคลเอ็นต์ (รวมถึงไคลเอ็นต์ Windows) จะตรวจพบไฟล์ใหม่ เพื่อให้สามารถป้องกันไม่ให้ไคลเอนต์ Windows ("ผู้สร้าง" ของไฟล์) ได้รับการแจ้งเตือน ฉันต้องการให้แอปสามารถรู้ได้ว่าใครสร้างไฟล์
// pseudocode ขี้ขลาด
ฟังก์ชั่น onFileCreated (จ) {
ถ้า (e.File.Creator == GetHostName())
กลับ;
SendToastNotification (e.File);
}
ปัจจุบัน ลูกค้าแต่ละรายลงชื่อเข้าใช้ผู้ใช้ Samba เดียวกัน และแอตทริบิวต์ Owner แสดงผู้ใช้ Samba (ตามที่ควร) ฉันไม่ค่อยเข้าใจการทำงานภายในของ Samba แต่นี่คือแนวทางบางส่วนที่ฉันกำลังนึกถึง:
- ลูกค้าแต่ละรายมีผู้ใช้ของตัวเองบนเซิร์ฟเวอร์ Samba (อาจน่าเบื่อหากจะเพิ่มลูกค้าอีกในอนาคต)
- ลูกค้าแต่ละรายมีหน้าที่รับผิดชอบในการรู้ว่าพวกเขาเพิ่งเขียนไฟล์ไปยัง Samba ที่ใช้ร่วมกันหรือไม่ (จะต้องมีสิทธิ์ระดับสูงในการเข้าถึงตัวจัดการไฟล์)
- เมื่ออัปโหลดไฟล์ไปยังการแชร์ เซิร์ฟเวอร์ Samba สามารถเพิ่มแอตทริบิวต์ไฟล์ที่กำหนดเองได้ตามอำเภอใจ ซึ่งแสดงถึงชื่อโฮสต์ของไคลเอ็นต์ที่สร้างไฟล์ (สถานการณ์กรณีที่ดีที่สุด หากเป็นไปได้)
อาจมีตัวเลือกที่ดีกว่า ขอบคุณมากล่วงหน้า