Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
die_coolen_jungs
our_own_cloud_project
Commits
a50ef618
Commit
a50ef618
authored
Aug 12, 2015
by
Robin McCorkell
Browse files
Migrate Dropbox external storage to new API
parent
ced04f9a
Changes
8
Hide whitespace changes
Inline
Side-by-side
apps/files_external/ajax/
dropbox
.php
→
apps/files_external/ajax/
oauth1
.php
View file @
a50ef618
...
...
@@ -30,6 +30,7 @@ OCP\JSON::checkLoggedIn();
OCP\JSON
::
callCheck
();
$l
=
\
OC
::
$server
->
getL10N
(
'files_external'
);
// FIXME: currently hard-coded to Dropbox OAuth
if
(
isset
(
$_POST
[
'app_key'
])
&&
isset
(
$_POST
[
'app_secret'
]))
{
$oauth
=
new
Dropbox_OAuth_Curl
((
string
)
$_POST
[
'app_key'
],
(
string
)
$_POST
[
'app_secret'
]);
if
(
isset
(
$_POST
[
'step'
]))
{
...
...
@@ -47,7 +48,7 @@ if (isset($_POST['app_key']) && isset($_POST['app_secret'])) {
'request_token_secret'
=>
$token
[
'token_secret'
])));
}
catch
(
Exception
$exception
)
{
OCP\JSON
::
error
(
array
(
'data'
=>
array
(
'message'
=>
$l
->
t
(
'Fetching request tokens failed. Verify that your
Dropbox
app key and secret are correct.'
))
$l
->
t
(
'Fetching request tokens failed. Verify that your app key and secret are correct.'
))
));
}
break
;
...
...
@@ -60,7 +61,7 @@ if (isset($_POST['app_key']) && isset($_POST['app_secret'])) {
'access_token_secret'
=>
$token
[
'token_secret'
]));
}
catch
(
Exception
$exception
)
{
OCP\JSON
::
error
(
array
(
'data'
=>
array
(
'message'
=>
$l
->
t
(
'Fetching access tokens failed. Verify that your
Dropbox
app key and secret are correct.'
))
$l
->
t
(
'Fetching access tokens failed. Verify that your app key and secret are correct.'
))
));
}
}
...
...
@@ -68,5 +69,5 @@ if (isset($_POST['app_key']) && isset($_POST['app_secret'])) {
}
}
}
else
{
OCP\JSON
::
error
(
array
(
'data'
=>
array
(
'message'
=>
$l
->
t
(
'Please provide a valid
Dropbox
app key and secret.'
))));
OCP\JSON
::
error
(
array
(
'data'
=>
array
(
'message'
=>
$l
->
t
(
'Please provide a valid app key and secret.'
))));
}
apps/files_external/appinfo/app.php
View file @
a50ef618
...
...
@@ -70,20 +70,6 @@ if (OCP\Config::getAppValue('files_external', 'allow_user_mounting', 'yes') == '
OCP\Util
::
connectHook
(
'OC_Filesystem'
,
'post_initMountPoints'
,
'\OC_Mount_Config'
,
'initMountPointsHook'
);
OCP\Util
::
connectHook
(
'OC_User'
,
'post_login'
,
'OC\Files\Storage\SMB_OC'
,
'login'
);
OC_Mount_Config
::
registerBackend
(
'\OC\Files\Storage\Dropbox'
,
[
'backend'
=>
'Dropbox'
,
'priority'
=>
100
,
'configuration'
=>
[
'configured'
=>
'#configured'
,
'app_key'
=>
(
string
)
$l
->
t
(
'App key'
),
'app_secret'
=>
'*'
.
$l
->
t
(
'App secret'
),
'token'
=>
'#token'
,
'token_secret'
=>
'#token_secret'
],
'custom'
=>
'dropbox'
,
'has_dependencies'
=>
true
,
]);
OC_Mount_Config
::
registerBackend
(
'\OC\Files\Storage\Google'
,
[
'backend'
=>
'Google Drive'
,
'priority'
=>
100
,
...
...
apps/files_external/appinfo/application.php
View file @
a50ef618
...
...
@@ -66,6 +66,7 @@ class Application extends App {
$container
->
query
(
'OCA\Files_External\Lib\Backend\OwnCloud'
),
$container
->
query
(
'OCA\Files_External\Lib\Backend\SFTP'
),
$container
->
query
(
'OCA\Files_External\Lib\Backend\AmazonS3'
),
$container
->
query
(
'OCA\Files_External\Lib\Backend\Dropbox'
),
]);
if
(
!
\
OC_Util
::
runningOnWindows
())
{
...
...
@@ -93,6 +94,9 @@ class Application extends App {
$container
->
query
(
'OCA\Files_External\Lib\Auth\Password\Password'
),
$container
->
query
(
'OCA\Files_External\Lib\Auth\Password\SessionCredentials'
),
// AuthMechanism::SCHEME_OAUTH1 mechanisms
$container
->
query
(
'OCA\Files_External\Lib\Auth\OAuth1\OAuth1'
),
// Specialized mechanisms
$container
->
query
(
'OCA\Files_External\Lib\Auth\AmazonS3\AccessKey'
),
]);
...
...
apps/files_external/appinfo/routes.php
View file @
a50ef618
...
...
@@ -46,8 +46,8 @@ namespace OCA\Files_External\AppInfo;
)
);
$this
->
create
(
'files_external_
dropbox
'
,
'ajax/
dropbox
.php'
)
->
actionInclude
(
'files_external/ajax/
dropbox
.php'
);
$this
->
create
(
'files_external_
oauth1
'
,
'ajax/
oauth1
.php'
)
->
actionInclude
(
'files_external/ajax/
oauth1
.php'
);
$this
->
create
(
'files_external_google'
,
'ajax/google.php'
)
->
actionInclude
(
'files_external/ajax/google.php'
);
...
...
apps/files_external/js/dropbox.js
deleted
100644 → 0
View file @
ced04f9a
$
(
document
).
ready
(
function
()
{
$
(
'
#externalStorage tbody tr.
\\\\
OC
\\\\
Files
\\\\
Storage
\\\\
Dropbox
'
).
each
(
function
()
{
var
configured
=
$
(
this
).
find
(
'
[data-parameter="configured"]
'
);
if
(
$
(
configured
).
val
()
==
'
true
'
)
{
$
(
this
).
find
(
'
.configuration input
'
).
attr
(
'
disabled
'
,
'
disabled
'
);
$
(
this
).
find
(
'
.configuration
'
).
append
(
'
<span id="access" style="padding-left:0.5em;">
'
+
t
(
'
files_external
'
,
'
Access granted
'
)
+
'
</span>
'
);
}
else
{
var
app_key
=
$
(
this
).
find
(
'
.configuration [data-parameter="app_key"]
'
).
val
();
var
app_secret
=
$
(
this
).
find
(
'
.configuration [data-parameter="app_secret"]
'
).
val
();
var
config
=
$
(
this
).
find
(
'
.configuration
'
);
if
(
app_key
!=
''
&&
app_secret
!=
''
)
{
var
pos
=
window
.
location
.
search
.
indexOf
(
'
oauth_token
'
)
+
12
;
var
token
=
$
(
this
).
find
(
'
.configuration [data-parameter="token"]
'
);
if
(
pos
!=
-
1
&&
window
.
location
.
search
.
substr
(
pos
,
$
(
token
).
val
().
length
)
==
$
(
token
).
val
())
{
var
token_secret
=
$
(
this
).
find
(
'
.configuration [data-parameter="token_secret"]
'
);
var
tr
=
$
(
this
);
var
statusSpan
=
$
(
tr
).
find
(
'
.status span
'
);
statusSpan
.
removeClass
();
statusSpan
.
addClass
(
'
waiting
'
);
$
.
post
(
OC
.
filePath
(
'
files_external
'
,
'
ajax
'
,
'
dropbox.php
'
),
{
step
:
2
,
app_key
:
app_key
,
app_secret
:
app_secret
,
request_token
:
$
(
token
).
val
(),
request_token_secret
:
$
(
token_secret
).
val
()
},
function
(
result
)
{
if
(
result
&&
result
.
status
==
'
success
'
)
{
$
(
token
).
val
(
result
.
access_token
);
$
(
token_secret
).
val
(
result
.
access_token_secret
);
$
(
configured
).
val
(
'
true
'
);
OCA
.
External
.
Settings
.
mountConfig
.
saveStorageConfig
(
tr
,
function
(
status
)
{
if
(
status
)
{
$
(
tr
).
find
(
'
.configuration input
'
).
attr
(
'
disabled
'
,
'
disabled
'
);
$
(
tr
).
find
(
'
.configuration
'
).
append
(
'
<span id="access" style="padding-left:0.5em;">
'
+
t
(
'
files_external
'
,
'
Access granted
'
)
+
'
</span>
'
);
}
});
}
else
{
OC
.
dialogs
.
alert
(
result
.
data
.
message
,
t
(
'
files_external
'
,
'
Error configuring Dropbox storage
'
));
}
});
}
}
else
{
onDropboxInputsChange
(
$
(
this
));
}
}
});
$
(
'
#externalStorage
'
).
on
(
'
paste
'
,
'
tbody tr.
\\\\
OC
\\\\
Files
\\\\
Storage
\\\\
Dropbox td
'
,
function
()
{
var
tr
=
$
(
this
).
parent
();
setTimeout
(
function
()
{
onDropboxInputsChange
(
tr
);
},
20
);
});
$
(
'
#externalStorage
'
).
on
(
'
keyup
'
,
'
tbody tr.
\\\\
OC
\\\\
Files
\\\\
Storage
\\\\
Dropbox td
'
,
function
()
{
onDropboxInputsChange
(
$
(
this
).
parent
());
});
$
(
'
#externalStorage
'
).
on
(
'
change
'
,
'
tbody tr.
\\\\
OC
\\\\
Files
\\\\
Storage
\\\\
Dropbox .chzn-select
'
,
function
()
{
onDropboxInputsChange
(
$
(
this
).
parent
().
parent
());
});
function
onDropboxInputsChange
(
tr
)
{
if
(
$
(
tr
).
find
(
'
[data-parameter="configured"]
'
).
val
()
!=
'
true
'
)
{
var
config
=
$
(
tr
).
find
(
'
.configuration
'
);
if
(
$
(
tr
).
find
(
'
.mountPoint input
'
).
val
()
!=
''
&&
$
(
config
).
find
(
'
[data-parameter="app_key"]
'
).
val
()
!=
''
&&
$
(
config
).
find
(
'
[data-parameter="app_secret"]
'
).
val
()
!=
''
&&
(
$
(
tr
).
find
(
'
.chzn-select
'
).
length
==
0
||
$
(
tr
).
find
(
'
.chzn-select
'
).
val
()
!=
null
))
{
if
(
$
(
tr
).
find
(
'
.dropbox
'
).
length
==
0
)
{
$
(
config
).
append
(
$
(
document
.
createElement
(
'
input
'
))
.
addClass
(
'
button dropbox
'
)
.
attr
(
'
type
'
,
'
button
'
)
.
attr
(
'
value
'
,
t
(
'
files_external
'
,
'
Grant access
'
)));
}
else
{
$
(
tr
).
find
(
'
.dropbox
'
).
show
();
}
}
else
if
(
$
(
tr
).
find
(
'
.dropbox
'
).
length
>
0
)
{
$
(
tr
).
find
(
'
.dropbox
'
).
hide
();
}
}
}
$
(
'
#externalStorage
'
).
on
(
'
click
'
,
'
.dropbox
'
,
function
(
event
)
{
event
.
preventDefault
();
var
tr
=
$
(
this
).
parent
().
parent
();
var
app_key
=
$
(
this
).
parent
().
find
(
'
[data-parameter="app_key"]
'
).
val
();
var
app_secret
=
$
(
this
).
parent
().
find
(
'
[data-parameter="app_secret"]
'
).
val
();
if
(
app_key
!=
''
&&
app_secret
!=
''
)
{
var
tr
=
$
(
this
).
parent
().
parent
();
var
configured
=
$
(
this
).
parent
().
find
(
'
[data-parameter="configured"]
'
);
var
token
=
$
(
this
).
parent
().
find
(
'
[data-parameter="token"]
'
);
var
token_secret
=
$
(
this
).
parent
().
find
(
'
[data-parameter="token_secret"]
'
);
$
.
post
(
OC
.
filePath
(
'
files_external
'
,
'
ajax
'
,
'
dropbox.php
'
),
{
step
:
1
,
app_key
:
app_key
,
app_secret
:
app_secret
,
callback
:
location
.
protocol
+
'
//
'
+
location
.
host
+
location
.
pathname
},
function
(
result
)
{
if
(
result
&&
result
.
status
==
'
success
'
)
{
$
(
configured
).
val
(
'
false
'
);
$
(
token
).
val
(
result
.
data
.
request_token
);
$
(
token_secret
).
val
(
result
.
data
.
request_token_secret
);
OCA
.
External
.
Settings
.
mountConfig
.
saveStorageConfig
(
tr
,
function
()
{
window
.
location
=
result
.
data
.
url
;
});
}
else
{
OC
.
dialogs
.
alert
(
result
.
data
.
message
,
t
(
'
files_external
'
,
'
Error configuring Dropbox storage
'
));
}
});
}
else
{
OC
.
dialogs
.
alert
(
t
(
'
files_external
'
,
'
Please provide a valid Dropbox app key and secret.
'
),
t
(
'
files_external
'
,
'
Error configuring Dropbox storage
'
)
);
}
});
});
apps/files_external/js/oauth1.js
0 → 100644
View file @
a50ef618
$
(
document
).
ready
(
function
()
{
OCA
.
External
.
Settings
.
mountConfig
.
whenSelectAuthMechanism
(
function
(
$tr
,
authMechanism
,
scheme
)
{
if
(
authMechanism
===
'
oauth1::oauth1
'
)
{
var
config
=
$tr
.
find
(
'
.configuration
'
);
config
.
append
(
$
(
document
.
createElement
(
'
input
'
))
.
addClass
(
'
button auth-param
'
)
.
attr
(
'
type
'
,
'
button
'
)
.
attr
(
'
value
'
,
t
(
'
files_external
'
,
'
Grant access
'
))
.
attr
(
'
name
'
,
'
oauth1_grant
'
)
);
var
configured
=
$tr
.
find
(
'
[data-parameter="configured"]
'
);
if
(
$
(
configured
).
val
()
==
'
true
'
)
{
$tr
.
find
(
'
.configuration input
'
).
attr
(
'
disabled
'
,
'
disabled
'
);
$tr
.
find
(
'
.configuration
'
).
append
(
'
<span id="access" style="padding-left:0.5em;">
'
+
t
(
'
files_external
'
,
'
Access granted
'
)
+
'
</span>
'
);
}
else
{
var
app_key
=
$tr
.
find
(
'
.configuration [data-parameter="app_key"]
'
).
val
();
var
app_secret
=
$tr
.
find
(
'
.configuration [data-parameter="app_secret"]
'
).
val
();
if
(
app_key
!=
''
&&
app_secret
!=
''
)
{
var
pos
=
window
.
location
.
search
.
indexOf
(
'
oauth_token
'
)
+
12
;
var
token
=
$tr
.
find
(
'
.configuration [data-parameter="token"]
'
);
if
(
pos
!=
-
1
&&
window
.
location
.
search
.
substr
(
pos
,
$
(
token
).
val
().
length
)
==
$
(
token
).
val
())
{
var
token_secret
=
$tr
.
find
(
'
.configuration [data-parameter="token_secret"]
'
);
var
statusSpan
=
$tr
.
find
(
'
.status span
'
);
statusSpan
.
removeClass
();
statusSpan
.
addClass
(
'
waiting
'
);
$
.
post
(
OC
.
filePath
(
'
files_external
'
,
'
ajax
'
,
'
oauth1.php
'
),
{
step
:
2
,
app_key
:
app_key
,
app_secret
:
app_secret
,
request_token
:
$
(
token
).
val
(),
request_token_secret
:
$
(
token_secret
).
val
()
},
function
(
result
)
{
if
(
result
&&
result
.
status
==
'
success
'
)
{
$
(
token
).
val
(
result
.
access_token
);
$
(
token_secret
).
val
(
result
.
access_token_secret
);
$
(
configured
).
val
(
'
true
'
);
OCA
.
External
.
Settings
.
mountConfig
.
saveStorageConfig
(
$tr
,
function
(
status
)
{
if
(
status
)
{
$tr
.
find
(
'
.configuration input
'
).
attr
(
'
disabled
'
,
'
disabled
'
);
$tr
.
find
(
'
.configuration
'
).
append
(
'
<span id="access" style="padding-left:0.5em;">
'
+
t
(
'
files_external
'
,
'
Access granted
'
)
+
'
</span>
'
);
}
});
}
else
{
OC
.
dialogs
.
alert
(
result
.
data
.
message
,
t
(
'
files_external
'
,
'
Error configuring OAuth1
'
));
}
});
}
}
}
}
});
$
(
'
#externalStorage
'
).
on
(
'
click
'
,
'
[name="oauth1_grant"]
'
,
function
(
event
)
{
event
.
preventDefault
();
var
tr
=
$
(
this
).
parent
().
parent
();
var
app_key
=
$
(
this
).
parent
().
find
(
'
[data-parameter="app_key"]
'
).
val
();
var
app_secret
=
$
(
this
).
parent
().
find
(
'
[data-parameter="app_secret"]
'
).
val
();
if
(
app_key
!=
''
&&
app_secret
!=
''
)
{
var
configured
=
$
(
this
).
parent
().
find
(
'
[data-parameter="configured"]
'
);
var
token
=
$
(
this
).
parent
().
find
(
'
[data-parameter="token"]
'
);
var
token_secret
=
$
(
this
).
parent
().
find
(
'
[data-parameter="token_secret"]
'
);
$
.
post
(
OC
.
filePath
(
'
files_external
'
,
'
ajax
'
,
'
oauth1.php
'
),
{
step
:
1
,
app_key
:
app_key
,
app_secret
:
app_secret
,
callback
:
location
.
protocol
+
'
//
'
+
location
.
host
+
location
.
pathname
},
function
(
result
)
{
if
(
result
&&
result
.
status
==
'
success
'
)
{
$
(
configured
).
val
(
'
false
'
);
$
(
token
).
val
(
result
.
data
.
request_token
);
$
(
token_secret
).
val
(
result
.
data
.
request_token_secret
);
OCA
.
External
.
Settings
.
mountConfig
.
saveStorageConfig
(
tr
,
function
()
{
window
.
location
=
result
.
data
.
url
;
});
}
else
{
OC
.
dialogs
.
alert
(
result
.
data
.
message
,
t
(
'
files_external
'
,
'
Error configuring OAuth1
'
));
}
});
}
else
{
OC
.
dialogs
.
alert
(
t
(
'
files_external
'
,
'
Please provide a valid app key and secret.
'
),
t
(
'
files_external
'
,
'
Error configuring OAuth1
'
)
);
}
});
});
apps/files_external/lib/auth/oauth1/oauth1.php
0 → 100644
View file @
a50ef618
<?php
/**
* @author Robin McCorkell <rmccorkell@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License, version 3,
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
namespace
OCA\Files_External\Lib\Auth\OAuth1
;
use
\
OCP\IL10N
;
use
\
OCA\Files_External\Lib\DefinitionParameter
;
use
\
OCA\Files_External\Lib\Auth\AuthMechanism
;
/**
* OAuth1 authentication
*/
class
OAuth1
extends
AuthMechanism
{
public
function
__construct
(
IL10N
$l
)
{
$this
->
setIdentifier
(
'oauth1::oauth1'
)
->
setScheme
(
self
::
SCHEME_OAUTH1
)
->
setText
(
$l
->
t
(
'OAuth1'
))
->
addParameters
([
(
new
DefinitionParameter
(
'configured'
,
'configured'
))
->
setType
(
DefinitionParameter
::
VALUE_HIDDEN
),
(
new
DefinitionParameter
(
'app_key'
,
$l
->
t
(
'App key'
))),
(
new
DefinitionParameter
(
'app_secret'
,
$l
->
t
(
'App secret'
)))
->
setType
(
DefinitionParameter
::
VALUE_PASSWORD
),
(
new
DefinitionParameter
(
'token'
,
'token'
))
->
setType
(
DefinitionParameter
::
VALUE_HIDDEN
),
(
new
DefinitionParameter
(
'token_secret'
,
'token_secret'
))
->
setType
(
DefinitionParameter
::
VALUE_HIDDEN
),
])
->
setCustomJs
(
'oauth1'
)
;
}
}
apps/files_external/lib/backend/dropbox.php
0 → 100644
View file @
a50ef618
<?php
/**
* @author Robin McCorkell <rmccorkell@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License, version 3,
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
namespace
OCA\Files_External\Lib\Backend
;
use
\
OCP\IL10N
;
use
\
OCA\Files_External\Lib\Backend\Backend
;
use
\
OCA\Files_External\Lib\DefinitionParameter
;
use
\
OCA\Files_External\Lib\Auth\AuthMechanism
;
use
\
OCA\Files_External\Service\BackendService
;
use
\
OCA\Files_External\Lib\Auth\OAuth1\OAuth1
;
class
Dropbox
extends
Backend
{
public
function
__construct
(
IL10N
$l
,
OAuth1
$legacyAuth
)
{
$this
->
setIdentifier
(
'dropbox'
)
->
addIdentifierAlias
(
'\OC\Files\Storage\Dropbox'
)
// legacy compat
->
setStorageClass
(
'\OC\Files\Storage\Dropbox'
)
->
setText
(
$l
->
t
(
'Dropbox'
))
->
addParameters
([
// all parameters handled in OAuth1 mechanism
])
->
setDependencyCheck
(
'\OC\Files\Storage\Dropbox::checkDependencies'
)
->
addAuthScheme
(
AuthMechanism
::
SCHEME_OAUTH1
)
->
setLegacyAuthMechanism
(
$legacyAuth
)
;
}
}
Write
Preview
Supports
Markdown
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