~xdavidwu/saf-cephfs

d5a8a9646d2fa675ce505c49a784b4882416222e — xdavidwu 3 years ago 80ada7a
add option to bypass file permission
M src/main/java/org/safcephfs/CephFSDocumentsProvider.java => src/main/java/org/safcephfs/CephFSDocumentsProvider.java +10 -14
@@ 38,6 38,8 @@ public class CephFSDocumentsProvider extends DocumentsProvider {
	private int uid;
	private ToastThread lthread;

	private boolean checkPermissions = true;

	private static final int retries = 2;
	
	private static final String[] DEFAULT_ROOT_PROJECTION = new String[]{


@@ 114,16 116,6 @@ public class CephFSDocumentsProvider extends DocumentsProvider {
		ioThread.start();
		ioHandler = new Handler(ioThread.getLooper());
		uid = Process.myUid();
		SharedPreferences settings = PreferenceManager
			.getDefaultSharedPreferences(getContext());
		mon = settings.getString("mon", "");
		key = settings.getString("key", "");
		id = settings.getString("id", "");
		path = settings.getString("path", "");
		cm = new CephMount(id);
		cm.conf_set("mon_host", mon);
		cm.conf_set("key", key);
		cm.mount(path);
		return true;
	}



@@ 270,12 262,12 @@ public class CephFSDocumentsProvider extends DocumentsProvider {
			row.add(Document.COLUMN_DISPLAY_NAME, entry);
			if (cs.isDir()) {
				row.add(Document.COLUMN_MIME_TYPE, Document.MIME_TYPE_DIR);
				if ((getPerm(cs) & PERM_WRITEABLE) == PERM_WRITEABLE) {
				if (!checkPermissions || (getPerm(cs) & PERM_WRITEABLE) == PERM_WRITEABLE) {
					row.add(Document.COLUMN_FLAGS, Document.FLAG_DIR_SUPPORTS_CREATE);
				}
			} else if (cs.isFile()) {
				row.add(Document.COLUMN_MIME_TYPE, getMime(entry));
				if ((getPerm(cs) & PERM_WRITEABLE) == PERM_WRITEABLE) {
				if (!checkPermissions || (getPerm(cs) & PERM_WRITEABLE) == PERM_WRITEABLE) {
					row.add(Document.COLUMN_FLAGS, Document.FLAG_SUPPORTS_WRITE);
				}
			}


@@ 320,12 312,12 @@ public class CephFSDocumentsProvider extends DocumentsProvider {
		row.add(Document.COLUMN_DISPLAY_NAME, filename);
		if (cs.isDir()) {
			row.add(Document.COLUMN_MIME_TYPE, Document.MIME_TYPE_DIR);
			if ((getPerm(cs) & PERM_WRITEABLE) == PERM_WRITEABLE) {
			if (!checkPermissions || (getPerm(cs) & PERM_WRITEABLE) == PERM_WRITEABLE) {
				row.add(Document.COLUMN_FLAGS, Document.FLAG_DIR_SUPPORTS_CREATE);
			}
		} else if (cs.isFile()) {
			row.add(Document.COLUMN_MIME_TYPE, getMime(filename));
			if ((getPerm(cs) & PERM_WRITEABLE) == PERM_WRITEABLE) {
			if (!checkPermissions || (getPerm(cs) & PERM_WRITEABLE) == PERM_WRITEABLE) {
				row.add(Document.COLUMN_FLAGS, Document.FLAG_SUPPORTS_WRITE);
			}
		}


@@ 346,6 338,10 @@ public class CephFSDocumentsProvider extends DocumentsProvider {
		cm = new CephMount(id);
		cm.conf_set("mon_host", mon);
		cm.conf_set("key", key);
		checkPermissions = settings.getBoolean("permissions", true);
		if (!checkPermissions) {
			cm.conf_set("client_permissions", "false");
		}
		cm.mount(path);
		CephStatVFS csvfs = new CephStatVFS();
		try {

M src/main/java/org/safcephfs/MainActivity.java => src/main/java/org/safcephfs/MainActivity.java +1 -1
@@ 30,7 30,7 @@ public class MainActivity extends PreferenceActivity
		idText = (EditTextPreference) findPreference("id");
		keyText = (EditTextPreference) findPreference("key");

		SharedPreferences settings=getPreferenceScreen().getSharedPreferences();
		SharedPreferences settings = getPreferenceScreen().getSharedPreferences();
		settings.registerOnSharedPreferenceChangeListener(this);
		if (!settings.getString("mon", "").equals(""))
			monText.setSummary(settings.getString("mon", ""));

M src/main/res/values/strings.xml => src/main/res/values/strings.xml +3 -0
@@ 12,4 12,7 @@
	<string name="key">Secret key</string>
	<string name="key_summary">Secret key of CephX user.</string>
	<string name="key_filled">(filled)</string>
	<string name="misc">Miscellaneous Settings</string>
	<string name="permissions">Enforce file permissions</string>
	<string name="permissions_summary">Whether to enforce file permissions.</string>
</resources>

M src/main/res/xml/main_pre.xml => src/main/res/xml/main_pre.xml +5 -0
@@ 17,4 17,9 @@
			android:inputType="textPassword"
			android:key="key" />
	</PreferenceCategory>
	<PreferenceCategory android:title="@string/misc">
		<CheckBoxPreference android:key="permissions"
			android:summary="@string/permissions_summary"
			android:title="@string/permissions" />
	</PreferenceCategory>
</PreferenceScreen>