Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
9ca3b536
Kaydet (Commit)
9ca3b536
authored
Agu 28, 2012
tarafından
Andrzej J.R. Hunt
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Saving of authorised remotes.
Change-Id: I4cf6542352ac4213e66e2bbd6cc54d4f9372de62
üst
571a7cba
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
116 additions
and
12 deletions
+116
-12
CommunicationService.java
...ice/impressremote/communication/CommunicationService.java
+1
-2
NetworkClient.java
...ibreoffice/impressremote/communication/NetworkClient.java
+33
-7
Impress.xcs
officecfg/registry/schema/org/openoffice/Office/Impress.xcs
+20
-1
Server.cxx
sd/source/ui/remotecontrol/Server.cxx
+62
-2
No files found.
android/sdremote/src/org/libreoffice/impressremote/communication/CommunicationService.java
Dosyayı görüntüle @
9ca3b536
...
...
@@ -86,8 +86,7 @@ public class CommunicationService extends Service implements Runnable {
mState
=
State
.
CONNECTING
;
switch
(
mServerDesired
.
getProtocol
())
{
case
NETWORK:
mClient
=
new
NetworkClient
(
mServerDesired
.
getAddress
(),
this
);
mClient
=
new
NetworkClient
(
mServerDesired
,
this
);
break
;
case
BLUETOOTH:
mClient
=
new
BluetoothClient
(
...
...
android/sdremote/src/org/libreoffice/impressremote/communication/NetworkClient.java
Dosyayı görüntüle @
9ca3b536
...
...
@@ -17,6 +17,8 @@ import java.util.Random;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.SharedPreferences
;
import
android.content.SharedPreferences.Editor
;
import
android.support.v4.content.LocalBroadcastManager
;
/**
...
...
@@ -30,20 +32,16 @@ public class NetworkClient extends Client {
private
Socket
mSocket
;
public
NetworkClient
(
S
tring
ipAddress
,
Context
aContext
)
{
public
NetworkClient
(
S
erver
aServer
,
Context
aContext
)
{
super
(
aContext
);
try
{
mSocket
=
new
Socket
(
ipAddress
,
PORT
);
mSocket
=
new
Socket
(
aServer
.
getAddress
()
,
PORT
);
mInputStream
=
mSocket
.
getInputStream
();
mReader
=
new
BufferedReader
(
new
InputStreamReader
(
mInputStream
,
CHARSET
));
mOutputStream
=
mSocket
.
getOutputStream
();
// Pairing.
Random
aRandom
=
new
Random
();
String
aPin
=
""
+
(
aRandom
.
nextInt
(
9000
)
+
1000
);
while
(
aPin
.
length
()
<
4
)
{
aPin
=
"0"
+
aPin
;
// Add leading zeros if necessary
}
String
aPin
=
setupPin
(
aServer
);
Intent
aIntent
=
new
Intent
(
CommunicationService
.
MSG_PAIRING_STARTED
);
aIntent
.
putExtra
(
"PIN"
,
aPin
);
...
...
@@ -82,6 +80,34 @@ public class NetworkClient extends Client {
}
private
String
setupPin
(
Server
aServer
)
{
// Get settings
SharedPreferences
aPreferences
=
mContext
.
getSharedPreferences
(
"sdremote_authorisedremotes"
,
android
.
content
.
Context
.
MODE_PRIVATE
);
if
(
aPreferences
.
contains
(
aServer
.
getName
()))
{
return
aPreferences
.
getString
(
aServer
.
getName
(),
""
);
}
else
{
String
aPin
=
generatePin
();
Editor
aEdit
=
aPreferences
.
edit
();
aEdit
.
putString
(
aServer
.
getName
(),
aPin
);
aEdit
.
commit
();
return
aPin
;
}
}
private
String
generatePin
()
{
Random
aRandom
=
new
Random
();
String
aPin
=
""
+
(
aRandom
.
nextInt
(
9000
)
+
1000
);
while
(
aPin
.
length
()
<
4
)
{
aPin
=
"0"
+
aPin
;
// Add leading zeros if necessary
}
return
aPin
;
}
@Override
public
void
closeConnection
()
{
try
{
...
...
officecfg/registry/schema/org/openoffice/Office/Impress.xcs
Dosyayı görüntüle @
9ca3b536
...
...
@@ -2,7 +2,7 @@
<!--***********************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
...
...
@@ -90,6 +90,19 @@
</info>
</prop>
</group>
<group
oor:name=
"AuthorisedRemote"
>
<info>
<author>
ajrhunt
</author>
<desc>
A Remote Control Device that has been authorised for connection.
</desc>
</info>
<prop
oor:name=
"PIN"
oor:type=
"xs:string"
>
<info>
<desc>
The PIN used by the device for authentication.
</desc>
</info>
</prop>
</group>
</templates>
<component>
<group
oor:name=
"Layout"
>
...
...
@@ -655,6 +668,12 @@
<value>
5000
</value>
</prop>
</group>
<set
oor:name=
"AuthorisedRemotes"
oor:node-type=
"AuthorisedRemote"
>
<info>
<author>
ajrhunt
</author>
<desc>
Contains a list of remote control devices that can connect without user confirmation.
</desc>
</info>
</set>
</group>
<group
oor:name=
"Snap"
>
<info>
...
...
sd/source/ui/remotecontrol/Server.cxx
Dosyayı görüntüle @
9ca3b536
...
...
@@ -11,7 +11,14 @@
#include <vector>
#include "officecfg/Office/Common.hxx"
#include "officecfg/Office/Impress.hxx"
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/uno/Sequence.hxx>
#include <comphelper/processfactory.hxx>
#include <comphelper/configuration.hxx>
#include "sddll.hxx"
...
...
@@ -25,8 +32,13 @@
using
namespace
std
;
using
namespace
sd
;
using
namespace
::
com
::
sun
::
star
;
using
namespace
::
com
::
sun
::
star
::
uno
;
using
namespace
::
com
::
sun
::
star
::
beans
;
using
namespace
::
com
::
sun
::
star
::
container
;
using
namespace
::
com
::
sun
::
star
::
lang
;
using
rtl
::
OString
;
using
namespace
::
osl
;
using
namespace
::
comphelper
;
// struct ClientInfoInternal:
// ClientInfo
...
...
@@ -89,10 +101,11 @@ void RemoteServer::execute()
OUString
aAddress
=
aClientAddr
.
getHostname
();
MutexGuard
aGuard
(
mDataMutex
);
mAvailableClients
.
push_back
(
new
ClientInfoInternal
(
ClientInfoInternal
*
pClient
=
new
ClientInfoInternal
(
OStringToOUString
(
aName
,
RTL_TEXTENCODING_UTF8
),
aAddress
,
pSocket
,
OStringToOUString
(
aPin
,
RTL_TEXTENCODING_UTF8
)
)
);
RTL_TEXTENCODING_UTF8
)
);
mAvailableClients
.
push_back
(
pClient
);
// Read off any additional non-empty lines
do
...
...
@@ -100,6 +113,27 @@ void RemoteServer::execute()
pSocket
->
readLine
(
aLine
);
}
while
(
aLine
.
getLength
()
>
0
);
// Check if we already have this server.
Reference
<
XNameAccess
>
xConfig
=
officecfg
::
Office
::
Impress
::
Misc
::
AuthorisedRemotes
::
get
();
Sequence
<
OUString
>
aNames
=
xConfig
->
getElementNames
();
for
(
int
i
=
0
;
i
<
aNames
.
getLength
();
i
++
)
{
if
(
aNames
[
i
].
equals
(
pClient
->
mName
)
)
{
Reference
<
XNameAccess
>
xSetItem
(
xConfig
->
getByName
(
aNames
[
i
]),
UNO_QUERY
);
Any
axPin
(
xSetItem
->
getByName
(
"PIN"
));
OUString
sPin
;
axPin
>>=
sPin
;
if
(
!
sPin
.
equals
(
pClient
->
mPin
)
)
{
break
;
}
connectClient
(
pClient
,
sPin
);
break
;
}
}
}
else
{
delete
pSocket
;
}
...
...
@@ -180,6 +214,32 @@ sal_Bool RemoteServer::connectClient( ClientInfo* pClient, rtl::OUString aPin )
ClientInfoInternal
*
apClient
=
(
ClientInfoInternal
*
)
pClient
;
if
(
apClient
->
mPin
.
equals
(
aPin
)
)
{
// Save in settings first
boost
::
shared_ptr
<
ConfigurationChanges
>
aChanges
=
ConfigurationChanges
::
create
();
Reference
<
XNameContainer
>
xConfig
=
officecfg
::
Office
::
Impress
::
Misc
::
AuthorisedRemotes
::
get
(
aChanges
);
Reference
<
XSingleServiceFactory
>
xChildFactory
(
xConfig
,
UNO_QUERY
);
Reference
<
XNameReplace
>
xChild
(
xChildFactory
->
createInstance
(),
UNO_QUERY
);
Any
aValue
;
if
(
xChild
.
is
())
{
// Check whether the client is already saved
Sequence
<
OUString
>
aNames
=
xConfig
->
getElementNames
();
for
(
int
i
=
0
;
i
<
aNames
.
getLength
();
i
++
)
{
if
(
aNames
[
i
].
equals
(
apClient
->
mName
)
)
xConfig
->
replaceByName
(
apClient
->
mName
,
makeAny
(
xChild
)
);
else
xConfig
->
insertByName
(
apClient
->
mName
,
makeAny
(
xChild
)
);
}
aValue
<<=
OUString
(
apClient
->
mPin
);
xChild
->
replaceByName
(
"PIN"
,
aValue
);
aChanges
->
commit
();
}
Communicator
*
pCommunicator
=
new
Communicator
(
apClient
->
mpStreamSocket
);
MutexGuard
aGuard
(
spServer
->
mDataMutex
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment