mirror of
https://github.com/haiwen/seafile-server.git
synced 2025-09-02 07:54:27 +00:00
Merge branch '6.2'
This commit is contained in:
@@ -5256,4 +5256,30 @@ seafile_repo_has_been_shared (const char *repo_id, int including_groups, GError
|
||||
including_groups ? TRUE : FALSE);
|
||||
return exists ? 1 : 0;
|
||||
}
|
||||
|
||||
GList *
|
||||
seafile_get_shared_users_by_repo (const char *repo_id, GError **error)
|
||||
{
|
||||
if (!repo_id) {
|
||||
g_set_error (error, 0, SEAF_ERR_BAD_ARGS, "Arguments error");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return seaf_share_manager_get_shared_users_by_repo (seaf->share_mgr,
|
||||
repo_id);
|
||||
}
|
||||
|
||||
GList *
|
||||
seafile_org_get_shared_users_by_repo (int org_id,
|
||||
const char *repo_id,
|
||||
GError **error)
|
||||
{
|
||||
if (!repo_id || org_id < 0) {
|
||||
g_set_error (error, 0, SEAF_ERR_BAD_ARGS, "Arguments error");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return seaf_share_manager_org_get_shared_users_by_repo (seaf->share_mgr,
|
||||
org_id, repo_id);
|
||||
}
|
||||
#endif /* SEAFILE_SERVER */
|
||||
|
@@ -1094,4 +1094,12 @@ seafile_get_org_group_repos_by_user (const char *user, int org_id, GError **erro
|
||||
|
||||
int
|
||||
seafile_repo_has_been_shared (const char *repo_id, int including_groups, GError **error);
|
||||
|
||||
GList *
|
||||
seafile_get_shared_users_by_repo (const char *repo_id, GError **error);
|
||||
|
||||
GList *
|
||||
seafile_org_get_shared_users_by_repo (int org_id,
|
||||
const char *repo_id,
|
||||
GError **error);
|
||||
#endif
|
||||
|
@@ -1029,3 +1029,11 @@ class SeafServerThreadedRpcClient(ccnet.RpcClientBase):
|
||||
@searpc_func("int", ["string", "int"])
|
||||
def repo_has_been_shared (repo_id, including_groups):
|
||||
pass
|
||||
|
||||
@searpc_func("objlist", ["string"])
|
||||
def get_shared_users_by_repo (repo_id):
|
||||
pass
|
||||
|
||||
@searpc_func("objlist", ["int", "string"])
|
||||
def org_get_shared_users_by_repo (org_id, repo_id):
|
||||
pass
|
||||
|
@@ -740,6 +740,12 @@ class SeafileAPI(object):
|
||||
def repo_has_been_shared(self, repo_id, including_groups=False):
|
||||
return True if seafserv_threaded_rpc.repo_has_been_shared(repo_id, 1 if including_groups else 0) else False
|
||||
|
||||
def get_shared_users_by_repo(self, repo_id):
|
||||
return seafserv_threaded_rpc.get_shared_users_by_repo (repo_id)
|
||||
|
||||
def org_get_shared_users_by_repo(self, org_id, repo_id):
|
||||
return seafserv_threaded_rpc.org_get_shared_users_by_repo(org_id, repo_id)
|
||||
|
||||
seafile_api = SeafileAPI()
|
||||
|
||||
class CcnetAPI(object):
|
||||
|
@@ -7,6 +7,9 @@ workers = 5
|
||||
runtime_dir = os.path.dirname(__file__)
|
||||
pidfile = os.path.join(runtime_dir, 'seahub.pid')
|
||||
errorlog = os.path.join(runtime_dir, 'error.log')
|
||||
accesslog = os.path.join(runtime_dir, 'access.log')
|
||||
|
||||
# disable access log
|
||||
#accesslog = os.path.join(runtime_dir, 'access.log')
|
||||
|
||||
# for file upload, we need a longer timeout value (default is only 30s, too short)
|
||||
timeout = 1200
|
||||
|
@@ -420,6 +420,14 @@ static void start_rpc_service (CcnetClient *client, int cloud_mode)
|
||||
seafile_get_shared_repo_by_path,
|
||||
"get_shared_repo_by_path",
|
||||
searpc_signature_object__string_string_string_int());
|
||||
searpc_server_register_function ("seafserv-threaded-rpcserver",
|
||||
seafile_get_shared_users_by_repo,
|
||||
"get_shared_users_by_repo",
|
||||
searpc_signature_objlist__string());
|
||||
searpc_server_register_function ("seafserv-threaded-rpcserver",
|
||||
seafile_org_get_shared_users_by_repo,
|
||||
"org_get_shared_users_by_repo",
|
||||
searpc_signature_objlist__int_string());
|
||||
|
||||
/* share repo to group */
|
||||
searpc_server_register_function ("seafserv-threaded-rpcserver",
|
||||
|
@@ -784,3 +784,60 @@ seaf_share_manager_repo_has_been_shared (SeafShareManager* mgr,
|
||||
|
||||
return exists;
|
||||
}
|
||||
|
||||
get_shared_users_cb (SeafDBRow *row, void *data)
|
||||
{
|
||||
GList **users = data;
|
||||
const char *repo_id = seaf_db_row_get_column_text (row, 0);
|
||||
const char *user = seaf_db_row_get_column_text (row, 1);
|
||||
const char *perm = seaf_db_row_get_column_text (row, 2);
|
||||
SeafileSharedUser *uobj = g_object_new (SEAFILE_TYPE_SHARED_USER,
|
||||
"repo_id", repo_id,
|
||||
"user", user,
|
||||
"perm", perm,
|
||||
NULL);
|
||||
*users = g_list_append (*users, uobj);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
GList *
|
||||
seaf_share_manager_org_get_shared_users_by_repo (SeafShareManager* mgr,
|
||||
int org_id,
|
||||
const char *repo_id)
|
||||
{
|
||||
GList *users = NULL;
|
||||
char *sql = "SELECT repo_id, to_email, permission FROM OrgSharedRepo WHERE org_id=? AND "
|
||||
"repo_id=?";
|
||||
|
||||
int ret = seaf_db_statement_foreach_row (mgr->seaf->db, sql,
|
||||
get_shared_users_cb, &users,
|
||||
2, "int", org_id, "string", repo_id);
|
||||
if (ret < 0) {
|
||||
seaf_warning("Failed to get users by repo_id[%s], org_id[%d]\n",
|
||||
repo_id, org_id);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return users;
|
||||
}
|
||||
|
||||
|
||||
GList *
|
||||
seaf_share_manager_get_shared_users_by_repo(SeafShareManager* mgr,
|
||||
const char *repo_id)
|
||||
{
|
||||
GList *users = NULL;
|
||||
char *sql = "SELECT repo_id, to_email, permission FROM SharedRepo WHERE "
|
||||
"repo_id=?";
|
||||
|
||||
int ret = seaf_db_statement_foreach_row (mgr->seaf->db, sql,
|
||||
get_shared_users_cb, &users,
|
||||
1, "string", repo_id);
|
||||
if (ret < 0) {
|
||||
seaf_warning("Failed to get users by repo_id[%s]\n", repo_id);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return users;
|
||||
}
|
||||
|
@@ -106,5 +106,14 @@ gboolean
|
||||
seaf_share_manager_repo_has_been_shared (SeafShareManager* mgr,
|
||||
const char *repo_id,
|
||||
gboolean including_groups);
|
||||
|
||||
GList *
|
||||
seaf_share_manager_org_get_shared_users_by_repo (SeafShareManager* mgr,
|
||||
int org_id,
|
||||
const char *repo_id);
|
||||
|
||||
GList *
|
||||
seaf_share_manager_get_shared_users_by_repo (SeafShareManager* mgr,
|
||||
const char *repo_id);
|
||||
#endif /* SHARE_MGR_H */
|
||||
|
||||
|
Reference in New Issue
Block a user