Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updating Nextcloud API #803

Merged
merged 5 commits into from
Jan 17, 2025
Merged

Updating Nextcloud API #803

merged 5 commits into from
Jan 17, 2025

Conversation

TechSupport26
Copy link
Contributor

Hello.

From my very limited testing and reading this change should work but in practice it appears not to.
What I have tried.
curl -X GET https://dummy.url/ocs/v2.php/cloud/user -u "dummy:random-token-0000-bla-bla-bla" -H "OCS-APIRequest: true"

<?xml version="1.0"?>
<ocs>
 <meta>
  <status>ok</status>
  <statuscode>200</statuscode>
  <message>OK</message>
 </meta>

Etc.

To me that is what we should get.

I tried changing the Nextcloud.php and app.json files in Heimdall/app/SupportedApps/Nextcloud/ to include the changes I have made but it did not work. I get General error connecting with API I am not sure if that is because I have not done something correct locally or if this just does not work.

One other thing is the Password section shows that the first 5 characters of the key is in the App Password box but this happens regardless of me putting in a key or not so is this just a visual thing and intentional?

Can someone please test and check this

Thanks.

@mvdkleijn mvdkleijn added the help wanted Extra attention is needed label Dec 4, 2024
@TheGameProfi
Copy link

Hey there if I saw it correctly the URL isn't correct.
The API Call your making in the Php File is /ocs/v2.php/cloud/userusername where username is a var.
And not /ocs/v2.php/cloud/user like you described.

@TechSupport26
Copy link
Contributor Author

TechSupport26 commented Jan 8, 2025

So are you saying it should be like this?

$this->url("/ocs/v2.php/cloud/user/" . $username . "?format=json")

Also, this is where I am looking at. Basic APIs

@TheGameProfi
Copy link

TheGameProfi commented Jan 8, 2025

I checked with my local NC running Version 30.0.4
And there are the endpoint /user (curl -X GET localhost/ocs/v2.php/cloud/user) & /users/{user} (curl -X GET localhost/ocs/v2.php/cloud/users/thegameprofi)
For /user it's Displaying the current User data => this->url("/ocs/v2.php/cloud/user?format=json")
and /users/{user} is displaying the data of a specific User => this->url("/ocs/v2.php/cloud/users/" . $username . "?format=json")
So you could just change the v1 to v2

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There the tailing / on the Url is also missing

@TheGameProfi
Copy link

I tested it locally and it working 👍

@TechSupport26
Copy link
Contributor Author

That's good.
Now I just have to figure out why my container can't talk to my nc instance.

@TheGameProfi
Copy link

Do you get any error message?

Can you add the ENV APP_DEBUG=true to the heimdall Server/App and check the logs inside /app/www/storage/logs/

@TechSupport26
Copy link
Contributor Author

[2025-01-13 10:01:54] local.ERROR: Call to a member function getBody() on null {"userId":1,"exception":"[object] (Error(code: 0): Call to a member function getBody() on null at /opt/Heimdall/app/SupportedApps/Nextcloud/Nextcloud.php:50)
[stacktrace]
#0 /opt/Heimdall/app/Http/Controllers/ItemController.php(490): App\SupportedApps\Nextcloud\Nextcloud->livestats()
#1 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\Http\Controllers\ItemController->getStats()
#2 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\Routing\Controller->callAction()
#3 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Routing/Route.php(259): Illuminate\Routing\ControllerDispatcher->dispatch()
#4 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\Routing\Route->runController()
#5 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php(806): Illuminate\Routing\Route->run()
#6 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Routing\Router->Illuminate\Routing\{closure}()
#7 /opt/Heimdall/app/Http/Middleware/CheckAllowed.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#8 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\Http\Middleware\CheckAllowed->handle()
#9 /opt/Heimdall/app/Http/Controllers/Controller.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#10 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(165): App\Http\Controllers\Controller->App\Http\Controllers\{closure}()
#11 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#12 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Routing\Middleware\SubstituteBindings->handle()
#13 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#14 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle()
#15 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#16 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\View\Middleware\ShareErrorsFromSession->handle()
#17 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#18 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest()
#19 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Session\Middleware\StartSession->handle()
#20 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#21 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()
#22 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#23 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Cookie\Middleware\EncryptCookies->handle()
#24 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#25 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php(805): Illuminate\Pipeline\Pipeline->then()
#26 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php(784): Illuminate\Routing\Router->runRouteWithinStack()
#27 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php(748): Illuminate\Routing\Router->runRoute()
#28 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php(737): Illuminate\Routing\Router->dispatchToRoute()
#29 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\Routing\Router->dispatch()
#30 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}()
#31 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#32 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Http\Middleware\TrustProxies->handle()
#33 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#34 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
#35 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle()
#36 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#37 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
#38 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\TrimStrings->handle()
#39 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#40 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle()
#41 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(99): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#42 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle()
#43 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#44 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\Pipeline\Pipeline->then()
#45 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()
#46 /opt/Heimdall/public/index.php(54): Illuminate\Foundation\Http\Kernel->handle()
#47 /opt/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/resources/server.php(16): require_once('...')
#48 {main}
"}
[2025-01-13 10:02:13] local.DEBUG: Get app triggered for: f2baa52d02ca888455ce47823f47bf372d5eecb3
[2025-01-13 10:02:38] local.ERROR: Connection refused
[2025-01-13 10:02:38] local.DEBUG: cURL error 28: Connection timed out after 15001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://nextcloud.domainname.com/ocs/v2.php/cloud/users/techsupport26?format=json

@TheGameProfi
Copy link

From the logs it just can't get a connection, if your Nextcloud domain is a local IP, could it be that the docker network is conflicting because it has the same ip range?
Else I also don't have an Idea why its not working 😅

@TechSupport26
Copy link
Contributor Author

Yeah, I can't ping nextcloud from the heimdall lxc so I think there is some kind of firewall issue that I have. The domain is not known internally and it goes through our public ipv4 so something for me to work out at some point.

@TechSupport26 TechSupport26 marked this pull request as ready for review January 13, 2025 10:32
Copy link
Collaborator

@mvdkleijn mvdkleijn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@mvdkleijn mvdkleijn merged commit ac2b655 into linuxserver:master Jan 17, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
Development

Successfully merging this pull request may close these issues.

3 participants