mirror of https://github.com/pixelfed/pixelfed
Merge branch 'staging' of github.com:pixelfed/pixelfed into jippi-fork
commit
d4198b3262
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Services\Internal\SoftwareUpdateService;
|
||||
|
||||
class SoftwareUpdateController extends Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
$this->middleware('admin');
|
||||
}
|
||||
|
||||
public function getSoftwareUpdateCheck(Request $request)
|
||||
{
|
||||
$res = SoftwareUpdateService::get();
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Internal;
|
||||
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Http\Client\ConnectionException;
|
||||
use Illuminate\Http\Client\RequestException;
|
||||
|
||||
class SoftwareUpdateService
|
||||
{
|
||||
const CACHE_KEY = 'pf:services:software-update:';
|
||||
|
||||
public static function get()
|
||||
{
|
||||
$curVersion = config('pixelfed.version');
|
||||
|
||||
$versions = Cache::remember(self::CACHE_KEY . 'latest:v1.0.0', 1800, function() {
|
||||
return self::fetchLatest();
|
||||
});
|
||||
|
||||
if(!$versions || !isset($versions['latest'], $versions['latest']['version'])) {
|
||||
$hideWarning = (bool) config('instance.software-update.disable_failed_warning');
|
||||
return [
|
||||
'current' => $curVersion,
|
||||
'latest' => [
|
||||
'version' => null,
|
||||
'published_at' => null,
|
||||
'url' => null,
|
||||
],
|
||||
'running_latest' => $hideWarning ? true : null
|
||||
];
|
||||
}
|
||||
|
||||
return [
|
||||
'current' => $curVersion,
|
||||
'latest' => [
|
||||
'version' => $versions['latest']['version'],
|
||||
'published_at' => $versions['latest']['published_at'],
|
||||
'url' => $versions['latest']['url'],
|
||||
],
|
||||
'running_latest' => strval($versions['latest']['version']) === strval($curVersion)
|
||||
];
|
||||
}
|
||||
|
||||
public static function fetchLatest()
|
||||
{
|
||||
try {
|
||||
$res = Http::withOptions(['allow_redirects' => false])
|
||||
->timeout(5)
|
||||
->connectTimeout(5)
|
||||
->retry(2, 500)
|
||||
->get('https://versions.pixelfed.org/versions.json');
|
||||
} catch (RequestException $e) {
|
||||
return;
|
||||
} catch (ConnectionException $e) {
|
||||
return;
|
||||
} catch (Exception $e) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$res->ok()) {
|
||||
return;
|
||||
}
|
||||
|
||||
return $res->json();
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
(()=>{"use strict";var e,r,n,o={},t={};function d(e){var r=t[e];if(void 0!==r)return r.exports;var n=t[e]={id:e,loaded:!1,exports:{}};return o[e].call(n.exports,n,n.exports,d),n.loaded=!0,n.exports}d.m=o,e=[],d.O=(r,n,o,t)=>{if(!n){var a=1/0;for(l=0;l<e.length;l++){for(var[n,o,t]=e[l],i=!0,c=0;c<n.length;c++)(!1&t||a>=t)&&Object.keys(d.O).every((e=>d.O[e](n[c])))?n.splice(c--,1):(i=!1,t<a&&(a=t));if(i){e.splice(l--,1);var s=o();void 0!==s&&(r=s)}}return r}t=t||0;for(var l=e.length;l>0&&e[l-1][2]>t;l--)e[l]=e[l-1];e[l]=[n,o,t]},d.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return d.d(r,{a:r}),r},d.d=(e,r)=>{for(var n in r)d.o(r,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((r,n)=>(d.f[n](e,r),r)),[])),d.u=e=>"js/"+{1084:"profile~followers.bundle",2470:"home.chunk",2530:"discover~myhashtags.chunk",2586:"compose.chunk",2732:"dms~message.chunk",3351:"discover~settings.chunk",3365:"dms.chunk",3623:"discover~findfriends.chunk",4028:"error404.bundle",4958:"discover.chunk",4965:"discover~memories.chunk",5865:"post.chunk",6053:"notifications.chunk",6869:"profile.chunk",7019:"discover~hashtag.bundle",8250:"i18n.bundle",8517:"daci.chunk",8600:"changelog.bundle",8625:"profile~following.bundle",8900:"discover~serverfeed.chunk"}[e]+"."+{1084:"5deed93248f20662",2470:"ada2cbf0ec3271bd",2530:"a72fc4882db8afd3",2586:"1ac292c93b524406",2732:"76edeafda3d92320",3351:"be88dc5ba1a24a7d",3365:"53a951c5de2d95ac",3623:"941b524eee8b8d63",4028:"3bbc118159460db6",4958:"b1846efb6bd1e43c",4965:"7d917826c3e9f17b",5865:"eb9804ff282909ae",6053:"3b92cf46da469de1",6869:"d52916cb68c9a146",7019:"6c2ff384b17ea58d",8250:"47cbf9f04d955267",8517:"8d4acc1db3f27a51",8600:"742a06ba0a547120",8625:"d2b3b1fc2e05dbd3",8900:"8365948d1867de3a"}[e]+".js",d.miniCssF=e=>({138:"css/spa",703:"css/admin",1242:"css/appdark",6170:"css/app",8737:"css/portfolio",9994:"css/landing"}[e]+".css"),d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},n="pixelfed:",d.l=(e,o,t,a)=>{if(r[e])r[e].push(o);else{var i,c;if(void 0!==t)for(var s=document.getElementsByTagName("script"),l=0;l<s.length;l++){var u=s[l];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==n+t){i=u;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,d.nc&&i.setAttribute("nonce",d.nc),i.setAttribute("data-webpack",n+t),i.src=e),r[e]=[o];var f=(n,o)=>{i.onerror=i.onload=null,clearTimeout(b);var t=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),t&&t.forEach((e=>e(o))),n)return n(o)},b=setTimeout(f.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),c&&document.head.appendChild(i)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),d.p="/",(()=>{var e={8929:0,1242:0,6170:0,8737:0,703:0,9994:0,138:0};d.f.j=(r,n)=>{var o=d.o(e,r)?e[r]:void 0;if(0!==o)if(o)n.push(o[2]);else if(/^(1242|138|6170|703|8737|8929|9994)$/.test(r))e[r]=0;else{var t=new Promise(((n,t)=>o=e[r]=[n,t]));n.push(o[2]=t);var a=d.p+d.u(r),i=new Error;d.l(a,(n=>{if(d.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var t=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;i.message="Loading chunk "+r+" failed.\n("+t+": "+a+")",i.name="ChunkLoadError",i.type=t,i.request=a,o[1](i)}}),"chunk-"+r,r)}},d.O.j=r=>0===e[r];var r=(r,n)=>{var o,t,[a,i,c]=n,s=0;if(a.some((r=>0!==e[r]))){for(o in i)d.o(i,o)&&(d.m[o]=i[o]);if(c)var l=c(d)}for(r&&r(n);s<a.length;s++)t=a[s],d.o(e,t)&&e[t]&&e[t][0](),e[t]=0;return d.O(l)},n=self.webpackChunkpixelfed=self.webpackChunkpixelfed||[];n.forEach(r.bind(null,0)),n.push=r.bind(null,n.push.bind(n))})(),d.nc=void 0})();
|
||||
(()=>{"use strict";var e,r,n,o={},t={};function d(e){var r=t[e];if(void 0!==r)return r.exports;var n=t[e]={id:e,loaded:!1,exports:{}};return o[e].call(n.exports,n,n.exports,d),n.loaded=!0,n.exports}d.m=o,e=[],d.O=(r,n,o,t)=>{if(!n){var a=1/0;for(l=0;l<e.length;l++){for(var[n,o,t]=e[l],i=!0,c=0;c<n.length;c++)(!1&t||a>=t)&&Object.keys(d.O).every((e=>d.O[e](n[c])))?n.splice(c--,1):(i=!1,t<a&&(a=t));if(i){e.splice(l--,1);var s=o();void 0!==s&&(r=s)}}return r}t=t||0;for(var l=e.length;l>0&&e[l-1][2]>t;l--)e[l]=e[l-1];e[l]=[n,o,t]},d.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return d.d(r,{a:r}),r},d.d=(e,r)=>{for(var n in r)d.o(r,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((r,n)=>(d.f[n](e,r),r)),[])),d.u=e=>"js/"+{1084:"profile~followers.bundle",2470:"home.chunk",2530:"discover~myhashtags.chunk",2586:"compose.chunk",2732:"dms~message.chunk",3351:"discover~settings.chunk",3365:"dms.chunk",3623:"discover~findfriends.chunk",4028:"error404.bundle",4958:"discover.chunk",4965:"discover~memories.chunk",5865:"post.chunk",6053:"notifications.chunk",6869:"profile.chunk",7019:"discover~hashtag.bundle",8250:"i18n.bundle",8517:"daci.chunk",8600:"changelog.bundle",8625:"profile~following.bundle",8900:"discover~serverfeed.chunk"}[e]+"."+{1084:"5deed93248f20662",2470:"88eeebf6c53d4dca",2530:"a72fc4882db8afd3",2586:"1ac292c93b524406",2732:"76edeafda3d92320",3351:"be88dc5ba1a24a7d",3365:"53a951c5de2d95ac",3623:"941b524eee8b8d63",4028:"3bbc118159460db6",4958:"b1846efb6bd1e43c",4965:"7d917826c3e9f17b",5865:"eb9804ff282909ae",6053:"3b92cf46da469de1",6869:"d52916cb68c9a146",7019:"6c2ff384b17ea58d",8250:"47cbf9f04d955267",8517:"8d4acc1db3f27a51",8600:"742a06ba0a547120",8625:"d2b3b1fc2e05dbd3",8900:"8365948d1867de3a"}[e]+".js",d.miniCssF=e=>({138:"css/spa",703:"css/admin",1242:"css/appdark",6170:"css/app",8737:"css/portfolio",9994:"css/landing"}[e]+".css"),d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},n="pixelfed:",d.l=(e,o,t,a)=>{if(r[e])r[e].push(o);else{var i,c;if(void 0!==t)for(var s=document.getElementsByTagName("script"),l=0;l<s.length;l++){var u=s[l];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==n+t){i=u;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,d.nc&&i.setAttribute("nonce",d.nc),i.setAttribute("data-webpack",n+t),i.src=e),r[e]=[o];var f=(n,o)=>{i.onerror=i.onload=null,clearTimeout(b);var t=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),t&&t.forEach((e=>e(o))),n)return n(o)},b=setTimeout(f.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),c&&document.head.appendChild(i)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),d.p="/",(()=>{var e={8929:0,1242:0,6170:0,8737:0,703:0,9994:0,138:0};d.f.j=(r,n)=>{var o=d.o(e,r)?e[r]:void 0;if(0!==o)if(o)n.push(o[2]);else if(/^(1242|138|6170|703|8737|8929|9994)$/.test(r))e[r]=0;else{var t=new Promise(((n,t)=>o=e[r]=[n,t]));n.push(o[2]=t);var a=d.p+d.u(r),i=new Error;d.l(a,(n=>{if(d.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var t=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;i.message="Loading chunk "+r+" failed.\n("+t+": "+a+")",i.name="ChunkLoadError",i.type=t,i.request=a,o[1](i)}}),"chunk-"+r,r)}},d.O.j=r=>0===e[r];var r=(r,n)=>{var o,t,[a,i,c]=n,s=0;if(a.some((r=>0!==e[r]))){for(o in i)d.o(i,o)&&(d.m[o]=i[o]);if(c)var l=c(d)}for(r&&r(n);s<a.length;s++)t=a[s],d.o(e,t)&&e[t]&&e[t][0](),e[t]=0;return d.O(l)},n=self.webpackChunkpixelfed=self.webpackChunkpixelfed||[];n.forEach(r.bind(null,0)),n.push=r.bind(null,n.push.bind(n))})(),d.nc=void 0})();
|
||||
@ -0,0 +1,166 @@
|
||||
<?php
|
||||
|
||||
Route::domain(config('pixelfed.domain.admin'))->prefix('i/admin')->group(function () {
|
||||
Route::redirect('/', '/dashboard');
|
||||
Route::redirect('timeline', config('app.url').'/timeline');
|
||||
Route::get('dashboard', 'AdminController@home')->name('admin.home');
|
||||
Route::get('stats', 'AdminController@stats')->name('admin.stats');
|
||||
Route::get('reports', 'AdminController@reports')->name('admin.reports');
|
||||
Route::get('reports/show/{id}', 'AdminController@showReport');
|
||||
Route::post('reports/show/{id}', 'AdminController@updateReport');
|
||||
Route::post('reports/bulk', 'AdminController@bulkUpdateReport');
|
||||
Route::get('reports/autospam/{id}', 'AdminController@showSpam');
|
||||
Route::post('reports/autospam/sync', 'AdminController@fixUncategorizedSpam');
|
||||
Route::post('reports/autospam/{id}', 'AdminController@updateSpam');
|
||||
Route::get('reports/autospam', 'AdminController@spam');
|
||||
Route::get('reports/appeals', 'AdminController@appeals');
|
||||
Route::get('reports/appeal/{id}', 'AdminController@showAppeal');
|
||||
Route::post('reports/appeal/{id}', 'AdminController@updateAppeal');
|
||||
Route::get('reports/email-verifications', 'AdminController@reportMailVerifications');
|
||||
Route::post('reports/email-verifications/ignore', 'AdminController@reportMailVerifyIgnore');
|
||||
Route::post('reports/email-verifications/approve', 'AdminController@reportMailVerifyApprove');
|
||||
Route::post('reports/email-verifications/clear-ignored', 'AdminController@reportMailVerifyClearIgnored');
|
||||
Route::redirect('stories', '/stories/list');
|
||||
Route::get('stories/list', 'AdminController@stories')->name('admin.stories');
|
||||
Route::redirect('statuses', '/statuses/list');
|
||||
Route::get('statuses/list', 'AdminController@statuses')->name('admin.statuses');
|
||||
Route::get('statuses/show/{id}', 'AdminController@showStatus');
|
||||
Route::redirect('profiles', '/i/admin/profiles/list');
|
||||
Route::get('profiles/list', 'AdminController@profiles')->name('admin.profiles');
|
||||
Route::get('profiles/edit/{id}', 'AdminController@profileShow');
|
||||
Route::redirect('users', '/users/list');
|
||||
Route::get('users/list', 'AdminController@users')->name('admin.users');
|
||||
Route::get('users/show/{id}', 'AdminController@userShow');
|
||||
Route::get('users/edit/{id}', 'AdminController@userEdit');
|
||||
Route::post('users/edit/{id}', 'AdminController@userEditSubmit');
|
||||
Route::get('users/activity/{id}', 'AdminController@userActivity');
|
||||
Route::get('users/message/{id}', 'AdminController@userMessage');
|
||||
Route::post('users/message/{id}', 'AdminController@userMessageSend');
|
||||
Route::get('users/modtools/{id}', 'AdminController@userModTools');
|
||||
Route::get('users/modlogs/{id}', 'AdminController@userModLogs');
|
||||
Route::post('users/modlogs/{id}', 'AdminController@userModLogsMessage');
|
||||
Route::post('users/modlogs/{id}/delete', 'AdminController@userModLogDelete');
|
||||
Route::get('users/delete/{id}', 'AdminController@userDelete');
|
||||
Route::post('users/delete/{id}', 'AdminController@userDeleteProcess');
|
||||
Route::post('users/moderation/update', 'AdminController@userModerate');
|
||||
Route::get('media', 'AdminController@media')->name('admin.media');
|
||||
Route::redirect('media/list', '/i/admin/media');
|
||||
Route::get('media/show/{id}', 'AdminController@mediaShow');
|
||||
Route::get('settings', 'AdminController@settings')->name('admin.settings');
|
||||
Route::post('settings', 'AdminController@settingsHomeStore');
|
||||
Route::get('settings/features', 'AdminController@settingsFeatures')->name('admin.settings.features');
|
||||
Route::get('settings/pages', 'AdminController@settingsPages')->name('admin.settings.pages');
|
||||
Route::get('settings/pages/edit', 'PageController@edit')->name('admin.settings.pages.edit');
|
||||
Route::post('settings/pages/edit', 'PageController@store');
|
||||
Route::post('settings/pages/delete', 'PageController@delete');
|
||||
Route::post('settings/pages/create', 'PageController@generatePage');
|
||||
Route::get('settings/maintenance', 'AdminController@settingsMaintenance')->name('admin.settings.maintenance');
|
||||
Route::get('settings/backups', 'AdminController@settingsBackups')->name('admin.settings.backups');
|
||||
Route::get('settings/storage', 'AdminController@settingsStorage')->name('admin.settings.storage');
|
||||
Route::get('settings/system', 'AdminController@settingsSystem')->name('admin.settings.system');
|
||||
|
||||
Route::get('instances', 'AdminController@instances')->name('admin.instances');
|
||||
Route::post('instances', 'AdminController@instanceScan');
|
||||
Route::get('instances/show/{id}', 'AdminController@instanceShow');
|
||||
Route::post('instances/edit/{id}', 'AdminController@instanceEdit');
|
||||
Route::get('apps/home', 'AdminController@appsHome')->name('admin.apps');
|
||||
Route::get('hashtags/home', 'AdminController@hashtagsHome')->name('admin.hashtags');
|
||||
Route::get('discover/home', 'AdminController@discoverHome')->name('admin.discover');
|
||||
Route::get('discover/category/create', 'AdminController@discoverCreateCategory')->name('admin.discover.create-category');
|
||||
Route::post('discover/category/create', 'AdminController@discoverCreateCategoryStore');
|
||||
Route::get('discover/category/edit/{id}', 'AdminController@discoverCategoryEdit');
|
||||
Route::post('discover/category/edit/{id}', 'AdminController@discoverCategoryUpdate');
|
||||
Route::post('discover/category/hashtag/create', 'AdminController@discoveryCategoryTagStore')->name('admin.discover.create-hashtag');
|
||||
|
||||
Route::get('messages/home', 'AdminController@messagesHome')->name('admin.messages');
|
||||
Route::get('messages/show/{id}', 'AdminController@messagesShow');
|
||||
Route::post('messages/mark-read', 'AdminController@messagesMarkRead');
|
||||
Route::redirect('site-news', '/i/admin/newsroom');
|
||||
Route::get('newsroom', 'AdminController@newsroomHome')->name('admin.newsroom.home');
|
||||
Route::get('newsroom/create', 'AdminController@newsroomCreate')->name('admin.newsroom.create');
|
||||
Route::get('newsroom/edit/{id}', 'AdminController@newsroomEdit');
|
||||
Route::post('newsroom/edit/{id}', 'AdminController@newsroomUpdate');
|
||||
Route::delete('newsroom/edit/{id}', 'AdminController@newsroomDelete');
|
||||
Route::post('newsroom/create', 'AdminController@newsroomStore');
|
||||
|
||||
Route::get('diagnostics/home', 'AdminController@diagnosticsHome')->name('admin.diagnostics');
|
||||
Route::post('diagnostics/decrypt', 'AdminController@diagnosticsDecrypt')->name('admin.diagnostics.decrypt');
|
||||
Route::get('custom-emoji/home', 'AdminController@customEmojiHome')->name('admin.custom-emoji');
|
||||
Route::post('custom-emoji/toggle-active/{id}', 'AdminController@customEmojiToggleActive');
|
||||
Route::get('custom-emoji/new', 'AdminController@customEmojiAdd');
|
||||
Route::post('custom-emoji/new', 'AdminController@customEmojiStore');
|
||||
Route::post('custom-emoji/delete/{id}', 'AdminController@customEmojiDelete');
|
||||
Route::get('custom-emoji/duplicates/{id}', 'AdminController@customEmojiShowDuplicates');
|
||||
|
||||
Route::get('directory/home', 'AdminController@directoryHome')->name('admin.directory');
|
||||
|
||||
Route::get('autospam/home', 'AdminController@autospamHome')->name('admin.autospam');
|
||||
|
||||
Route::redirect('asf/', 'asf/home');
|
||||
Route::get('asf/home', 'AdminShadowFilterController@home');
|
||||
Route::get('asf/create', 'AdminShadowFilterController@create');
|
||||
Route::get('asf/edit/{id}', 'AdminShadowFilterController@edit');
|
||||
Route::post('asf/edit/{id}', 'AdminShadowFilterController@storeEdit');
|
||||
Route::post('asf/create', 'AdminShadowFilterController@store');
|
||||
|
||||
Route::get('asf/home', 'AdminShadowFilterController@home');
|
||||
// Route::redirect('curated-onboarding/', 'curated-onboarding/home');
|
||||
// Route::get('curated-onboarding/home', 'AdminCuratedRegisterController@index')->name('admin.curated-onboarding');
|
||||
// Route::get('curated-onboarding/show/{id}/preview-details-message', 'AdminCuratedRegisterController@previewDetailsMessageShow');
|
||||
// Route::get('curated-onboarding/show/{id}/preview-message', 'AdminCuratedRegisterController@previewMessageShow');
|
||||
// Route::get('curated-onboarding/show/{id}', 'AdminCuratedRegisterController@show');
|
||||
|
||||
Route::prefix('api')->group(function() {
|
||||
Route::get('stats', 'AdminController@getStats');
|
||||
Route::get('accounts', 'AdminController@getAccounts');
|
||||
Route::get('posts', 'AdminController@getPosts');
|
||||
Route::get('instances', 'AdminController@getInstances');
|
||||
Route::post('directory/save', 'AdminController@directoryStore');
|
||||
Route::get('directory/initial-data', 'AdminController@directoryInitialData');
|
||||
Route::get('directory/popular-posts', 'AdminController@directoryGetPopularPosts');
|
||||
Route::post('directory/add-by-id', 'AdminController@directoryGetAddPostByIdSearch');
|
||||
Route::delete('directory/banner-image', 'AdminController@directoryDeleteBannerImage');
|
||||
Route::post('directory/submit', 'AdminController@directoryHandleServerSubmission');
|
||||
Route::post('directory/testimonial/save', 'AdminController@directorySaveTestimonial');
|
||||
Route::post('directory/testimonial/delete', 'AdminController@directoryDeleteTestimonial');
|
||||
Route::post('directory/testimonial/update', 'AdminController@directoryUpdateTestimonial');
|
||||
Route::get('hashtags/stats', 'AdminController@hashtagsStats');
|
||||
Route::get('hashtags/query', 'AdminController@hashtagsApi');
|
||||
Route::get('hashtags/get', 'AdminController@hashtagsGet');
|
||||
Route::post('hashtags/update', 'AdminController@hashtagsUpdate');
|
||||
Route::post('hashtags/clear-trending-cache', 'AdminController@hashtagsClearTrendingCache');
|
||||
Route::get('instances/get', 'AdminController@getInstancesApi');
|
||||
Route::get('instances/stats', 'AdminController@getInstancesStatsApi');
|
||||
Route::get('instances/query', 'AdminController@getInstancesQueryApi');
|
||||
Route::post('instances/update', 'AdminController@postInstanceUpdateApi');
|
||||
Route::post('instances/create', 'AdminController@postInstanceCreateNewApi');
|
||||
Route::post('instances/delete', 'AdminController@postInstanceDeleteApi');
|
||||
Route::post('instances/refresh-stats', 'AdminController@postInstanceRefreshStatsApi');
|
||||
Route::get('instances/download-backup', 'AdminController@downloadBackup');
|
||||
Route::post('instances/import-data', 'AdminController@importBackup');
|
||||
Route::get('reports/stats', 'AdminController@reportsStats');
|
||||
Route::get('reports/all', 'AdminController@reportsApiAll');
|
||||
Route::get('reports/get/{id}', 'AdminController@reportsApiGet');
|
||||
Route::post('reports/handle', 'AdminController@reportsApiHandle');
|
||||
Route::get('reports/spam/all', 'AdminController@reportsApiSpamAll');
|
||||
Route::get('reports/spam/get/{id}', 'AdminController@reportsApiSpamGet');
|
||||
Route::post('reports/spam/handle', 'AdminController@reportsApiSpamHandle');
|
||||
Route::post('autospam/config', 'AdminController@getAutospamConfigApi');
|
||||
Route::post('autospam/reports/closed', 'AdminController@getAutospamReportsClosedApi');
|
||||
Route::post('autospam/train', 'AdminController@postAutospamTrainSpamApi');
|
||||
Route::post('autospam/search/non-spam', 'AdminController@postAutospamTrainNonSpamSearchApi');
|
||||
Route::post('autospam/train/non-spam', 'AdminController@postAutospamTrainNonSpamSubmitApi');
|
||||
Route::post('autospam/tokens/custom', 'AdminController@getAutospamCustomTokensApi');
|
||||
Route::post('autospam/tokens/store', 'AdminController@saveNewAutospamCustomTokensApi');
|
||||
Route::post('autospam/tokens/update', 'AdminController@updateAutospamCustomTokensApi');
|
||||
Route::post('autospam/tokens/export', 'AdminController@exportAutospamCustomTokensApi');
|
||||
Route::post('autospam/config/enable', 'AdminController@enableAutospamApi');
|
||||
Route::post('autospam/config/disable', 'AdminController@disableAutospamApi');
|
||||
// Route::get('instances/{id}/accounts', 'AdminController@getInstanceAccounts');
|
||||
// Route::get('curated-onboarding/show/{id}/activity-log', 'AdminCuratedRegisterController@apiActivityLog');
|
||||
// Route::post('curated-onboarding/show/{id}/message/preview', 'AdminCuratedRegisterController@apiMessagePreviewStore');
|
||||
// Route::post('curated-onboarding/show/{id}/message/send', 'AdminCuratedRegisterController@apiMessageSendStore');
|
||||
// Route::post('curated-onboarding/show/{id}/reject', 'AdminCuratedRegisterController@apiHandleReject');
|
||||
// Route::post('curated-onboarding/show/{id}/approve', 'AdminCuratedRegisterController@apiHandleApprove');
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,174 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\SoftwareUpdateController;
|
||||
|
||||
Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofactor', 'localization'])->group(function () {
|
||||
Route::group(['prefix' => 'api'], function () {
|
||||
Route::get('search', 'SearchController@searchAPI');
|
||||
Route::post('status/view', 'StatusController@storeView');
|
||||
Route::get('v1/polls/{id}', 'PollController@getPoll');
|
||||
Route::post('v1/polls/{id}/votes', 'PollController@vote');
|
||||
|
||||
Route::group(['prefix' => 'web-admin'], function() {
|
||||
Route::get('software-update/check', [SoftwareUpdateController::class, 'getSoftwareUpdateCheck']);
|
||||
});
|
||||
|
||||
Route::group(['prefix' => 'compose'], function() {
|
||||
Route::group(['prefix' => 'v0'], function() {
|
||||
Route::post('/media/upload', 'ComposeController@mediaUpload');
|
||||
Route::post('/media/update', 'ComposeController@mediaUpdate');
|
||||
Route::delete('/media/delete', 'ComposeController@mediaDelete');
|
||||
Route::get('/search/tag', 'ComposeController@searchTag');
|
||||
Route::get('/search/location', 'ComposeController@searchLocation');
|
||||
Route::get('/search/mention', 'ComposeController@searchMentionAutocomplete');
|
||||
Route::get('/search/hashtag', 'ComposeController@searchHashtagAutocomplete');
|
||||
|
||||
Route::post('/publish', 'ComposeController@store');
|
||||
Route::post('/publish/text', 'ComposeController@storeText');
|
||||
Route::get('/media/processing', 'ComposeController@mediaProcessingCheck');
|
||||
Route::get('/settings', 'ComposeController@composeSettings');
|
||||
Route::post('/poll', 'ComposeController@createPoll');
|
||||
});
|
||||
});
|
||||
|
||||
Route::group(['prefix' => 'direct'], function () {
|
||||
Route::get('browse', 'DirectMessageController@browse');
|
||||
Route::post('create', 'DirectMessageController@create');
|
||||
Route::get('thread', 'DirectMessageController@thread');
|
||||
Route::post('mute', 'DirectMessageController@mute');
|
||||
Route::post('unmute', 'DirectMessageController@unmute');
|
||||
Route::delete('message', 'DirectMessageController@delete');
|
||||
Route::post('media', 'DirectMessageController@mediaUpload');
|
||||
Route::post('lookup', 'DirectMessageController@composeLookup');
|
||||
Route::post('read', 'DirectMessageController@read');
|
||||
});
|
||||
|
||||
Route::group(['prefix' => 'v2'], function() {
|
||||
Route::get('config', 'ApiController@siteConfiguration');
|
||||
Route::get('discover', 'InternalApiController@discover');
|
||||
Route::get('discover/posts', 'InternalApiController@discoverPosts')->middleware('auth:api');
|
||||
Route::get('profile/{username}/status/{postid}', 'PublicApiController@status');
|
||||
Route::get('profile/{username}/status/{postid}/state', 'PublicApiController@statusState');
|
||||
Route::get('comments/{username}/status/{postId}', 'PublicApiController@statusComments');
|
||||
Route::get('status/{id}/replies', 'InternalApiController@statusReplies');
|
||||
Route::post('moderator/action', 'InternalApiController@modAction');
|
||||
Route::get('discover/categories', 'InternalApiController@discoverCategories');
|
||||
Route::get('loops', 'DiscoverController@loopsApi');
|
||||
Route::post('loops/watch', 'DiscoverController@loopWatch');
|
||||
Route::get('discover/tag', 'DiscoverController@getHashtags');
|
||||
Route::get('statuses/{id}/replies', 'Api\ApiV1Controller@statusReplies');
|
||||
Route::get('statuses/{id}/state', 'Api\ApiV1Controller@statusState');
|
||||
});
|
||||
|
||||
Route::group(['prefix' => 'pixelfed'], function() {
|
||||
Route::group(['prefix' => 'v1'], function() {
|
||||
Route::get('accounts/verify_credentials', 'ApiController@verifyCredentials');
|
||||
Route::get('accounts/relationships', 'Api\ApiV1Controller@accountRelationshipsById');
|
||||
Route::get('accounts/search', 'Api\ApiV1Controller@accountSearch');
|
||||
Route::get('accounts/{id}/statuses', 'PublicApiController@accountStatuses');
|
||||
Route::post('accounts/{id}/block', 'Api\ApiV1Controller@accountBlockById');
|
||||
Route::post('accounts/{id}/unblock', 'Api\ApiV1Controller@accountUnblockById');
|
||||
Route::get('statuses/{id}', 'PublicApiController@getStatus');
|
||||
Route::get('accounts/{id}', 'PublicApiController@account');
|
||||
Route::post('avatar/update', 'ApiController@avatarUpdate');
|
||||
Route::get('custom_emojis', 'Api\ApiV1Controller@customEmojis');
|
||||
Route::get('notifications', 'ApiController@notifications');
|
||||
Route::get('timelines/public', 'PublicApiController@publicTimelineApi');
|
||||
Route::get('timelines/home', 'PublicApiController@homeTimelineApi');
|
||||
Route::get('timelines/network', 'PublicApiController@networkTimelineApi');
|
||||
Route::get('newsroom/timeline', 'NewsroomController@timelineApi');
|
||||
Route::post('newsroom/markasread', 'NewsroomController@markAsRead');
|
||||
Route::get('favourites', 'Api\BaseApiController@accountLikes');
|
||||
Route::get('mutes', 'AccountController@accountMutes');
|
||||
Route::get('blocks', 'AccountController@accountBlocks');
|
||||
});
|
||||
|
||||
Route::group(['prefix' => 'v2'], function() {
|
||||
Route::get('config', 'ApiController@siteConfiguration');
|
||||
Route::get('discover', 'InternalApiController@discover');
|
||||
Route::get('discover/posts', 'InternalApiController@discoverPosts');
|
||||
Route::get('discover/profiles', 'DiscoverController@profilesDirectoryApi');
|
||||
Route::get('profile/{username}/status/{postid}', 'PublicApiController@status');
|
||||
Route::get('comments/{username}/status/{postId}', 'PublicApiController@statusComments');
|
||||
Route::post('moderator/action', 'InternalApiController@modAction');
|
||||
Route::get('discover/categories', 'InternalApiController@discoverCategories');
|
||||
Route::get('loops', 'DiscoverController@loopsApi');
|
||||
Route::post('loops/watch', 'DiscoverController@loopWatch');
|
||||
Route::get('discover/tag', 'DiscoverController@getHashtags');
|
||||
Route::get('discover/posts/trending', 'DiscoverController@trendingApi');
|
||||
Route::get('discover/posts/hashtags', 'DiscoverController@trendingHashtags');
|
||||
Route::get('discover/posts/places', 'DiscoverController@trendingPlaces');
|
||||
Route::get('seasonal/yir', 'SeasonalController@getData');
|
||||
Route::post('seasonal/yir', 'SeasonalController@store');
|
||||
Route::get('mutes', 'AccountController@accountMutesV2');
|
||||
Route::get('blocks', 'AccountController@accountBlocksV2');
|
||||
Route::get('filters', 'AccountController@accountFiltersV2');
|
||||
Route::post('status/compose', 'InternalApiController@composePost');
|
||||
Route::get('status/{id}/replies', 'InternalApiController@statusReplies');
|
||||
Route::post('status/{id}/archive', 'ApiController@archive');
|
||||
Route::post('status/{id}/unarchive', 'ApiController@unarchive');
|
||||
Route::get('statuses/archives', 'ApiController@archivedPosts');
|
||||
Route::get('discover/memories', 'DiscoverController@myMemories');
|
||||
Route::get('discover/account-insights', 'DiscoverController@accountInsightsPopularPosts');
|
||||
Route::get('discover/server-timeline', 'DiscoverController@serverTimeline');
|
||||
Route::get('discover/meta', 'DiscoverController@enabledFeatures');
|
||||
Route::post('discover/admin/features', 'DiscoverController@updateFeatures');
|
||||
});
|
||||
|
||||
Route::get('discover/accounts/popular', 'Api\ApiV1Controller@discoverAccountsPopular');
|
||||
Route::post('web/change-language.json', 'SpaController@updateLanguage');
|
||||
});
|
||||
|
||||
Route::group(['prefix' => 'local'], function () {
|
||||
// Route::post('status/compose', 'InternalApiController@composePost')->middleware('throttle:maxPostsPerHour,60')->middleware('throttle:maxPostsPerDay,1440');
|
||||
Route::get('exp/rec', 'ApiController@userRecommendations');
|
||||
Route::post('discover/tag/subscribe', 'HashtagFollowController@store');
|
||||
Route::get('discover/tag/list', 'HashtagFollowController@getTags');
|
||||
// Route::get('profile/sponsor/{id}', 'ProfileSponsorController@get');
|
||||
Route::get('bookmarks', 'InternalApiController@bookmarks');
|
||||
Route::get('collection/items/{id}', 'CollectionController@getItems');
|
||||
Route::post('collection/item', 'CollectionController@storeId');
|
||||
Route::delete('collection/item', 'CollectionController@deleteId');
|
||||
Route::get('collection/{id}', 'CollectionController@getCollection');
|
||||
Route::post('collection/{id}', 'CollectionController@store');
|
||||
Route::delete('collection/{id}', 'CollectionController@delete');
|
||||
Route::post('collection/{id}/publish', 'CollectionController@publish');
|
||||
Route::get('profile/collections/{id}', 'CollectionController@getUserCollections');
|
||||
|
||||
Route::post('compose/tag/untagme', 'MediaTagController@untagProfile');
|
||||
|
||||
Route::post('import/ig', 'ImportPostController@store');
|
||||
Route::get('import/ig/config', 'ImportPostController@getConfig');
|
||||
Route::post('import/ig/media', 'ImportPostController@storeMedia');
|
||||
Route::post('import/ig/existing', 'ImportPostController@getImportedFiles');
|
||||
Route::post('import/ig/posts', 'ImportPostController@getImportedPosts');
|
||||
Route::post('import/ig/processing', 'ImportPostController@getProcessingCount');
|
||||
});
|
||||
|
||||
Route::group(['prefix' => 'web/stories'], function () {
|
||||
Route::get('v1/recent', 'StoryController@recent');
|
||||
Route::get('v1/viewers', 'StoryController@viewers');
|
||||
Route::get('v1/profile/{id}', 'StoryController@profile');
|
||||
Route::get('v1/exists/{id}', 'StoryController@exists');
|
||||
Route::get('v1/poll/results', 'StoryController@pollResults');
|
||||
Route::post('v1/viewed', 'StoryController@viewed');
|
||||
Route::post('v1/react', 'StoryController@react');
|
||||
Route::post('v1/comment', 'StoryController@comment');
|
||||
Route::post('v1/publish/poll', 'StoryController@publishStoryPoll');
|
||||
Route::post('v1/poll/vote', 'StoryController@storyPollVote');
|
||||
Route::post('v1/report', 'StoryController@storeReport');
|
||||
Route::post('v1/add', 'StoryController@apiV1Add');
|
||||
Route::post('v1/crop', 'StoryController@cropPhoto');
|
||||
Route::post('v1/publish', 'StoryController@publishStory');
|
||||
Route::delete('v1/delete/{id}', 'StoryController@apiV1Delete');
|
||||
});
|
||||
|
||||
Route::group(['prefix' => 'portfolio'], function () {
|
||||
Route::post('self/curated.json', 'PortfolioController@storeCurated');
|
||||
Route::post('self/settings.json', 'PortfolioController@getSettings');
|
||||
Route::get('account/settings.json', 'PortfolioController@getAccountSettings');
|
||||
Route::post('self/update-settings.json', 'PortfolioController@storeSettings');
|
||||
Route::get('{username}/feed', 'PortfolioController@getFeed');
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
Route::domain(config('portfolio.domain'))->group(function () {
|
||||
Route::redirect('redirect/home', config('app.url'));
|
||||
Route::get('/', 'PortfolioController@index');
|
||||
Route::post('api/portfolio/self/curated.json', 'PortfolioController@storeCurated');
|
||||
Route::post('api/portfolio/self/settings.json', 'PortfolioController@getSettings');
|
||||
Route::get('api/portfolio/account/settings.json', 'PortfolioController@getAccountSettings');
|
||||
Route::post('api/portfolio/self/update-settings.json', 'PortfolioController@storeSettings');
|
||||
Route::get('api/portfolio/{username}/feed', 'PortfolioController@getFeed');
|
||||
|
||||
Route::prefix(config('portfolio.path'))->group(function() {
|
||||
Route::get('/', 'PortfolioController@index');
|
||||
Route::get('settings', 'PortfolioController@settings')->name('portfolio.settings');
|
||||
Route::post('settings', 'PortfolioController@store');
|
||||
Route::get('{username}/{id}', 'PortfolioController@showPost');
|
||||
Route::get('{username}', 'PortfolioController@show');
|
||||
|
||||
Route::fallback(function () {
|
||||
return view('errors.404');
|
||||
});
|
||||
});
|
||||
});
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue