return true;
}
+ bool check_privilege (void) {
+ int cmd;
+
+ m_trans.put_command (ISM_TRANS_CMD_CHECK_REMOTE_PRIVILEGE);
+ m_trans.write_to_socket (m_socket_remoteinput2panel);
+ if (!m_trans.read_from_socket (m_socket_remoteinput2panel, m_socket_timeout)) {
+ std::cerr << __func__ << " read_from_socket() may be timeout \n";
+ return false;
+ }
+
+ if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
+ m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK) {
+ } else {
+ std::cerr << __func__ << " remote control permission denied\n";
+ return false;
+ }
+
+ return true;
+ }
+
remote_control_callback_type recv_callback_message(void) {
if (! m_socket_panel2remoteinput.is_connected () || ! m_trans_recv.read_from_socket(m_socket_panel2remoteinput, m_socket_timeout))
return REMOTE_CONTROL_CALLBACK_ERROR;
m_impl->close_connection ();
}
-bool RemoteInputClient::is_connected (void) const
+bool
+RemoteInputClient::is_connected (void) const
{
return m_impl->is_connected ();
}
-int RemoteInputClient::get_panel2remote_connection_number (void) const
+int
+RemoteInputClient::get_panel2remote_connection_number (void) const
{
return m_impl->get_panel2remote_connection_number ();
}
return m_impl->send_remote_input_message (str);
}
+bool
+RemoteInputClient::check_privilege (void)
+{
+ return m_impl->check_privilege ();
+}
+
remote_control_callback_type
RemoteInputClient::recv_callback_message (void)
{
if (!client->remote_client.open_connection())
goto cleanup;
+ if (!client->remote_client.prepare()) {
+ LOGE ("REMOTE_CONTROL_REPLY_TIMEOUT\n");
+ goto cleanup;
+ }
+
+ if (!client->remote_client.check_privilege()) {
+ LOGE ("REMOTE_CONTROL_PERMISSION_DENIED\n");
+ goto cleanup;
+ }
+
client->remote_client_id = client->remote_client.get_panel2remote_connection_number();
if (client->remote_client_id >= 0) {
if (client == NULL)
return REMOTE_CONTROL_INVALID_PARAMETER;
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
+ if (!client->remote_client.check_privilege())
+ return REMOTE_CONTROL_PERMISSION_DENIED;
+
if (client->remote_fd_handler)
ecore_main_fd_handler_del(client->remote_fd_handler);
if (client == NULL)
return REMOTE_CONTROL_INVALID_PARAMETER;
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
+ if (!client->remote_client.check_privilege())
+ return REMOTE_CONTROL_PERMISSION_DENIED;
+
client->focus_in_cb = func;
client->focus_in_cb_user_data = user_data;
if (client == NULL)
return REMOTE_CONTROL_INVALID_PARAMETER;
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
+ if (!client->remote_client.check_privilege())
+ return REMOTE_CONTROL_PERMISSION_DENIED;
+
client->focus_in_cb = NULL;
client->focus_in_cb_user_data = NULL;
if (client == NULL)
return REMOTE_CONTROL_INVALID_PARAMETER;
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
+ if (!client->remote_client.check_privilege())
+ return REMOTE_CONTROL_PERMISSION_DENIED;
+
client->focus_out_cb = func;
client->focus_out_cb_user_data = user_data;
if (client == NULL)
return REMOTE_CONTROL_INVALID_PARAMETER;
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
+ if (!client->remote_client.check_privilege())
+ return REMOTE_CONTROL_PERMISSION_DENIED;
+
client->focus_out_cb = NULL;
client->focus_out_cb_user_data = NULL;
if (client == NULL)
return REMOTE_CONTROL_INVALID_PARAMETER;
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
+ if (!client->remote_client.check_privilege())
+ return REMOTE_CONTROL_PERMISSION_DENIED;
+
client->metadata_cb = func;
client->metadata_cb_user_data = user_data;
if (client == NULL)
return REMOTE_CONTROL_INVALID_PARAMETER;
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
+ if (!client->remote_client.check_privilege())
+ return REMOTE_CONTROL_PERMISSION_DENIED;
+
client->metadata_cb = NULL;
client->metadata_cb_user_data = NULL;
if (client == NULL)
return REMOTE_CONTROL_INVALID_PARAMETER;
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
+ if (!client->remote_client.check_privilege())
+ return REMOTE_CONTROL_PERMISSION_DENIED;
+
client->default_text_cb = func;
client->default_text_cb_user_data = user_data;
if (client == NULL)
return REMOTE_CONTROL_INVALID_PARAMETER;
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
+ if (!client->remote_client.check_privilege())
+ return REMOTE_CONTROL_PERMISSION_DENIED;
+
client->default_text_cb = NULL;
client->default_text_cb_user_data = NULL;
if (client == NULL || key < REMOTE_CONTROL_KEY_ENTER || key > REMOTE_CONTROL_KEY_PAGE_DOWN)
return REMOTE_CONTROL_INVALID_PARAMETER;
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
+ if (!client->remote_client.check_privilege())
+ return REMOTE_CONTROL_PERMISSION_DENIED;
+
char key_str[10] = {};
snprintf(key_str, sizeof(key_str), "%d", key);
String command = String ("|plain|send_key_event|") + String (key_str) + String ("|");
- client->remote_client.prepare();
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
if (focus_flag && client->remote_client.send_remote_input_message(command.c_str ())) {
event_check_flag = true;
return REMOTE_CONTROL_ERROR_NONE;
if (client == NULL || !text || strlen(text) == 0)
return REMOTE_CONTROL_INVALID_PARAMETER;
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
+ if (!client->remote_client.check_privilege())
+ return REMOTE_CONTROL_PERMISSION_DENIED;
+
String command = String ("|plain|commit_string|") + String (text) + String ("|");
- client->remote_client.prepare();
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
if (focus_flag && client->remote_client.send_remote_input_message(command.c_str ())) {
event_check_flag = true;
return REMOTE_CONTROL_ERROR_NONE;
if (client == NULL || !text || strlen(text) == 0 || cursor_pos < 0)
return REMOTE_CONTROL_INVALID_PARAMETER;
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
+ if (!client->remote_client.check_privilege())
+ return REMOTE_CONTROL_PERMISSION_DENIED;
+
String command = String ("|plain|update_preedit_string|") + String (text) + String ("|");
- client->remote_client.prepare();
+ if (!client->remote_client.prepare())
+ return REMOTE_CONTROL_REPLY_TIMEOUT;
+
if (focus_flag && client->remote_client.send_remote_input_message(command.c_str ())) {
event_check_flag = true;
return REMOTE_CONTROL_ERROR_NONE;