Sinkronisasi Jamf
Utilitas untuk mentransfer file antar folder file, titik distribusi berbagi file Jamf Pro dan titik distribusi Jamf Pro JDCS2 dan memperbarui paket di server Jamf Pro.
instruksi
Lihat Panduan Pengguna JamfSync/Resources/Jamf Sync.pdf untuk bantuan menjalankan Jamf Sync, atau saat menjalankan "Jamf Sync.app", klik Bantuan / Panduan Pengguna Jamf Sync.
Fitur
- Menangani beberapa server Jamf Pro, memungkinkan pemindahan paket dari server pengujian ke server produksi atau sebaliknya.
- Dapat menyalin file antara Cloud DP, file share DP, atau folder file lokal.
- Secara opsional dapat menghapus file dari DP tujuan yang tidak ada pada DP sumber.
- Secara opsional dapat menghapus paket di server Jamf Pro yang tidak ada pada DP sumber.
- Dapat memperlakukan folder file lokal sebagai titik distribusi, memungkinkan pengunggahan dan pengunduhan beberapa paket.
- Menangani pembuatan checksum untuk paket secara otomatis.
- Parameter baris perintah memungkinkan sinkronisasi skrip.
Keterangan
Pengaturan
- Tambahkan server dan/atau folder Jamf Pro.
- Folder diperlakukan sebagai titik distribusi, memungkinkan sinkronisasi antara titik distribusi atau folder lainnya.
- Ketika tutup diklik, jika ada perubahan, ia akan menghubungi setiap server Jamf Pro untuk mendapatkan titik distribusi dan akan menggunakannya untuk mengisi daftar pilihan sumber dan tujuan.
Tambahkan Server Jamf Pro
- Pengguna dapat memberikan URL Server Jamf Pro dan id pengguna dan kata sandi atau id klien dan rahasia klien, bergantung pada apakah autentikasi standar atau OAuth (peran API dan klien) digunakan.
- Dapat menekan tombol "Uji" untuk memverifikasi bahwa server Jamf Pro dapat diakses dengan pengaturan.
- Ini secara otomatis akan menambahkan server cloud DP dan semua DP berbagi file yang ada di Server Jamf Pro.
- Pengaturan disimpan secara lokal. Kredensial untuk Jamf Pro dan titik distribusi berbagi file akan disimpan dengan aman di gantungan kunci.
Tambahkan Folder Lokal
- Mengizinkan penambahan folder lokal, yang akan disajikan kepada pengguna sebagai opsi untuk digunakan sebagai sumber atau tujuan. Folder diperlakukan sebagai titik distribusi, memungkinkan sinkronisasi antara titik distribusi atau folder lainnya. Ini akan berisi nama dan lokasi direktori. Nama tersebut akan default ke nama direktori.
Sunting
- Memungkinkan Anda mengedit item apa pun yang dipilih. Jika tidak ada yang dipilih, tombol edit dinonaktifkan.
Menghapus
- Memungkinkan Anda menghapus item apa pun yang dipilih. Ini akan meminta konfirmasi sebelum menghapus. Jika tidak ada yang dipilih, tombol hapus dinonaktifkan.
Tampilan Utama
- Tombol Sinkronisasi akan berwarna abu-abu hingga sumber dan tujuan dipilih serta sumber dan tujuan berbeda. Ini akan menyinkronkan dari sumber ke tujuan.
- Kotak centang Paksa Sinkronisasi akan menyebabkan semua item sumber disalin meskipun checksum pada tujuan cocok. Jika tidak dicentang, hanya item yang ditambahkan atau diubah yang akan disinkronkan.
- Terdapat pemilih untuk sumber dan tujuan, yang masing-masing berisi daftar semua folder dan titik distribusi. Awalnya "--" dipilih, yang menunjukkan tidak ada pilihan.
- Daftar file pada titik distribusi sumber yang dipilih ada di sebelah kiri dan daftar file pada titik distribusi tujuan ada di sebelah kanan.
- Ketika titik distribusi sumber dan tujuan dipilih, kolom Sinkronisasi akan menampilkan ikon yang menunjukkan apa yang akan terjadi selama sinkronisasi. Jika ikon Sinkronisasi berwarna, berarti ia akan ikut serta dalam sinkronisasi. Kalau hitam putih tidak akan terjadi. Ikon sinkronisasi akan memiliki tanda + jika akan ditambahkan, tanda centang jika akan diperbarui, tanda X jika akan dihapus dari tujuan (jika mereka memilih setelah mengklik Sinkronisasi) dan tanda = jika file di keduanya kecocokan sumber dan tujuan.
- Item dalam daftar sumber dapat dipilih. Jika ada item yang dipilih, hanya file tersebut yang akan disinkronkan dan tidak ada file yang akan dihapus dari tujuan. Jika tidak ada file yang dipilih, saat tombol Sinkronisasi ditekan, Anda akan ditanya apakah akan menghapus item yang tidak ada pada sumbernya. Jika Anda memilih Ya, maka file apa pun di tujuan yang menunjukkan simbol x merah akan dihapus dari tujuan dan daftar paket di Jamf Pro.
Parameter baris perintah
CATATAN: Jalankan JamfSync tanpa parameter terlebih dahulu untuk menambahkan server dan/atau folder Jamf Pro. Kata sandi untuk server Jamf Pro dan titik distribusi harus disimpan di gantungan kunci agar dapat disinkronkan melalui argumen baris perintah.
Penggunaan: JamfSync [(-s | --srcDp) ] [(-d | --dstDp) ] [(-f | --forceSync)] [(-r | --removeFilesNotOnSource)] [(-rp | -- hapusPackagesNotOnSource)] [-p | --kemajuan] JamfSync [-h | --membantu] JamfSync [-v | --versi]
-s --srcDp: The name of the source distribution point or folder.
-d --dstDp: The name of the destination distribution point or folder.
-f --forceSync: Force synchronization of all files even if they appear to match on both the source and destination.
-r --removeFilesNotOnSource: Delete files on the destination that are not on the source. No delete is done if ommitted.
-rp --removePackagesNotOnSource: Delete packages on the destination's Jamf Pro instance that are not on the source. No delete is done if ommitted.
-p --progress: Show the progress of files being copied.
-v --version: Display the version number and build number.
-h --help: Shows this help text.
CATATAN: Jika nama titik distribusi sama di beberapa instans Jamf Pro, gunakan "dpName:jamfProName" untuk namanya.
Contoh: "/Applications/Jamf Sync.app/Contents/MacOS/Jamf Sync" -srcDp localSourceName -dstDp tujuanSourceName --removeFilesNotOnSource --progress "/Applications/Jamf Sync.app/Contents/MacOS/Jamf Sync" -s "JCDS :Panggung" -d "JCDS:Prod" -r -rp -p "/Applications/Jamf Sync.app/Contents/MacOS/Jamf Sync" -s localSourceName -d tujuanSourceName
Ikhtisar Kode Sumber
Kode sumbernya terletak di beberapa kelompok.
- Model berisi kelas-kelas yang tidak berhubungan langsung dengan UI.
- Di dalam grup Model terdapat ViewModels, yang lebih terkait erat dengan UI tetapi tidak secara khusus terkait dengannya. Biasanya ketika bidang dalam model tampilan berubah, UI terkait akan digambar ulang secara otomatis.
- Sumber daya berisi gambar dan file lain yang digunakan oleh program.
- UI berisi file SwiftUI untuk semua tampilan yang muncul di program, serta JamfSyncApp, yang merupakan tempat eksekusi program dimulai.
- Utilitas berisi kelas-kelas yang melakukan tugas-tugas yang lebih umum.
Model
File dalam grup Model digunakan untuk melacak dan memproses data yang digunakan.
DataModel: Ini mewakili keadaan hampir semua hal dan berisi data serta fungsi yang bekerja pada data tersebut. Ini bertanggung jawab untuk memuat data dari penyimpanan inti dan juga memuat data untuk titik distribusi. Ini telah menerbitkan variabel yang digunakan untuk mengontrol UI.
SavableItem: Kelas dasar untuk apa pun yang dapat disimpan (JamfProInstance dan FolderInstance). Item ini disimpan dalam Data Inti. Kata sandi tidak disimpan dalam data inti melainkan disimpan dalam gantungan kunci selama pengguna mengizinkannya. Fungsi loadDps diganti oleh kelas anak tertentu dan bertanggung jawab untuk memuat semua titik distribusi yang terkait dengan item tersebut. Fungsi getDps mengembalikan titik distribusi yang terkait dengan item tersebut.
- JamfProInstance - Ini mewakili instance Jamf Pro dan bertanggung jawab untuk memuat data yang diperlukan dan berkomunikasi dengan API Jamf Pro. Itu juga membuat dan memuat data untuk titik distribusi yang terkait dengan server Jamf Pro. Itu juga memuat dan menyimpan informasi paket dari server Jamf Pro.
- FolderInstance - Ini mewakili direktori lokal di komputer. Ini menciptakan satu FolderDp yang bertindak seperti titik distribusi selama sinkronisasi.
DistributionPoint: Kelas dasar untuk semua objek DistributionPoint (FileShareDp, Jcds2Dp & FolderDp) Fungsi copyFiles adalah fungsi utama untuk sinkronisasi. Ini memanggil fungsi lain yang ditimpa oleh objek titik distribusi tertentu.
- FileShareDp - Objek titik distribusi spesifik untuk titik distribusi berbagi file.
- Jcds2Dp - Objek titik distribusi spesifik untuk titik distribusi Cloud.
- FolderDp - Objek titik distribusi spesifik untuk titik distribusi Folder (mewakili folder file lokal).
Objek lainnya:
- DpFile - Menyimpan informasi untuk satu file. Ini juga berisi fungsi untuk memelihara dan membandingkan checksumnya.
- DpFiles - Menyimpan daftar file. Ini memiliki fungsi untuk membantu menemukan file tertentu, memperbarui checksum untuk file, dan memperbarui status setiap file yang menunjukkan status file.
- Checksum - Mewakili checksum jenis apa pun (biasanya SHA-512)
- Checksum - Objek yang menyimpan daftar objek Checksum dan memiliki fungsi untuk digunakan pada kumpulan checksum.
LihatModel
File dalam grup ViewModels digunakan untuk melacak dan memproses data yang digunakan. Variabel yang dipublikasikan akan menyebabkan tampilan terkait digambar ulang. * LogViewModel - Digunakan untuk tampilan log dan pesan yang ditampilkan di bagian bawah layar. * SetupViewModel - Digunakan untuk tampilan pengaturan. * PackageListViewModel - Digunakan untuk daftar file sumber dan tujuan pada tampilan utama. * DpFileViewModel - Digunakan untuk setiap file di PackageListViewModel. Ia memiliki penunjuk ke instance DpFile tertentu dan memiliki bidang khusus UI. * DpFilesViewModel - Memiliki array objek DpFileViewModel dan digunakan untuk menyimpan file dalam objek PackageListViewModel.
UI
File dalam grup UI adalah file SwiftUI untuk antarmuka pengguna. Data di DataModel digunakan untuk mengontrol tampilan. Setiap kali properti dengan @Published diubah, hal ini akan menyebabkan tampilan apa pun yang menggunakan bidang tersebut digambar ulang.
- AboutView: Tampilan yang menampilkan versi dan informasi lainnya.
- ChecksumView: Menampilkan checksum apa yang telah dihitung untuk suatu file dan menampilkan string dengan checksum sebenarnya saat diarahkan.
- KonfirmasiView: Tampilan yang digunakan untuk mengkonfirmasi berbagai hal
- ContentView: Tampilan utama yang menggerakkan segalanya.
- FileSharePasswordView: Digunakan untuk meminta kata sandi berbagi file ketika belum disimpan di gantungan kunci.
- FolderView: Tampilan saat menambah atau mengedit folder
- HeaderView: Bagian atas ContentView yang berisi tombol Sinkronisasi dan kotak centang Paksa Sinkronisasi.
- JamfProPasswordView: Digunakan untuk meminta kata sandi Jamf Pro ketika belum disimpan di gantungan kunci.
- JamfProServerView: Tampilan saat menambah atau mengedit server Jamf Pro
- JamfSyncApp: Aplikasi utama yang menampung ContentView
- LogMessageView: Tampilan yang menampilkan secara singkat pesan log di bagian bawah tampilan utama.
- LogView: Tampilan yang menampilkan pesan log
- PackageAnimationView: Tampilan yang menampilkan animasi selama sinkronisasi.
- PackageListView: Tampilan daftar paket pada tampilan utama.
- SavableItemListView: Tampilan daftar pada tampilan Pengaturan
- SetupView: Tampilan utama untuk Setup
- SourceDestinationView: Bagian MainView dengan pemilih sumber dan tujuan serta daftar file.
- SynchronizationProgressView: Tampilan sinkronisasi yang menunjukkan kemajuan sinkronisasi yang sedang berlangsung. Ini juga memulai sinkronisasi di onAppear .
Kegunaan
File di grup Utilitas adalah kelas pembantu untuk memproses data dan tidak memiliki koneksi langsung ke UI.
- ArgumentParser: Mengurai argumen baris perintah jika ada.
- CloudSessionDelegate: Menangani fungsi URLSessionTaskDelegate dan URLSessionDownloadDelegatedelegate saat file ditransfer ke dan dari cloud.
- FileHash: Membuat nilai hash file. Ini adalah kelas aktor, jadi suatu fungsi hanya akan memproses satu file dalam satu waktu untuk mencegah konflik.
- FileShare: Menangani pemasangan dan pelepasan fileshare. Ini adalah kelas aktor untuk menghindari konflik.
- FileShares: Memasang berbagi atau mengembalikan berbagi file yang sudah dipasang. Dan melepas semua berbagi file yang terpasang. Ini adalah kelas aktor untuk menghindari konflik.
- KeychainHelper: Membantu penyimpanan dan pengambilan item gantungan kunci.
- View+NSWindow: Digunakan untuk menampilkan tampilan sebagai jendelanya sendiri.
- Pengaturan Pengguna: Membaca, menyimpan dan melacak data yang ditulis ke pengaturan pengguna.
Memperluas jenis titik distribusi yang didukung oleh JamfSync
Akan berguna untuk menambahkan titik distribusi untuk koneksi cloud langsung, seperti untuk Rackspace, Amazon Web Services, Akamai. Hal-hal berikut perlu dilakukan untuk mendukung salah satu hal tersebut:
- Buat objek yang mewarisi SavableItem (seperti FolderInstance) dan tambahkan variabel anggota untuk setiap informasi yang perlu disediakan.
- Buat objek yang mewarisi dari DistributionPoint. Lihat Jcds2Dp untuk contohnya. Lihat FolderItem untuk melihat bagaimana ini harus dibuat dan dikembalikan (seperti FolderDp).
- Buat entitas di StoredSettings.xcdatamodeld dan atur induknya ke SavableItemData.
- Ubah SetupView agar dapat membuat, mengedit, dan menghapus item baru.
- Tambahkan objek baru seperti JamfProServerView sehingga pengguna dapat memasukkan informasi apa pun yang diperlukan.
- Gunakan KeychainHelper untuk menyimpan kredensial ke rantai kunci dan menambahkan nama layanan tambahan (seperti fileShareServiceName) jika perlu.
- Pastikan pengujian unit yang ada lulus dan tambahkan pengujian unit tambahan untuk mencakup perubahan yang Anda buat.
Masih diperlukan perbaikan
- Buat dukungan untuk titik distribusi cloud tambahan seperti Rackspace, Amazon Web Services, Akamai, seperti dijelaskan di atas.
- Tindakan pembatalan perlu ditingkatkan. Untuk FileShareDps dan FolderDps tidak membatalkan file yang sedang ditransfer sehingga memerlukan waktu cukup lama untuk membatalkannya.
- Jadikan daftar dapat diurutkan berdasarkan kolom mana pun.
- Buat kolom daftar cukup besar.
- Tambahkan lebih banyak cakupan pengujian unit (terutama selesaikan Jcds2DpTests dan tambahkan pengujian unit untuk CommandLineProcessing).
- Perbaikan dapat dilakukan agar lebih mudah diakses.
- Akan lebih baik jika membuatnya dapat dilokalkan dan mulai menambahkan beberapa pelokalan.
Berkontribusi
Untuk menyiapkan pengembangan lokal, buat fork dari repo ini, buat cabang di fork Anda dengan nama sesuai masalah atau alur kerja yang Anda tingkatkan, periksa cabang Anda, lalu buka folder di Xcode.
Repositori ini memerlukan komitmen terverifikasi yang ditandatangani. Anda dapat mengetahui lebih lanjut tentang penandatanganan komitmen di GitHub Docs.
Tarik permintaan
Sebelum mengirimkan permintaan penarikan Anda, harap lakukan hal berikut:
- Jika Anda menambahkan perintah atau fitur baru, perintah atau fitur tersebut harus menyertakan pengujian unit. Jika Anda mengubah fungsionalitas, perbarui pengujian atau tambahkan pengujian baru sesuai kebutuhan.
- Verifikasi semua tes unit lulus.
- Tambahkan catatan ke CHANGELOG yang menjelaskan apa yang Anda ubah.
- Jika permintaan penarikan Anda terkait dengan suatu masalah, tambahkan tautan ke masalah tersebut dalam deskripsi.
Kontributor
- Harry Strand
- Leslie Helou