From 077ba0731429c85cbdb0b456c52ce059011ffc11 Mon Sep 17 00:00:00 2001 From: Hivert Quentin Date: Tue, 9 Apr 2024 10:54:56 +0200 Subject: [PATCH] progress --- UI/MainUI/GNUmakefile | 1 + UI/MainUI/SOGoAPIActions.m | 75 +++++++++++++++++++++ UI/MainUI/product.plist | 5 ++ UI/WebServerResources/js/vendor/punycode.js | 2 +- 4 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 UI/MainUI/SOGoAPIActions.m diff --git a/UI/MainUI/GNUmakefile b/UI/MainUI/GNUmakefile index f248ee848..d019955d1 100644 --- a/UI/MainUI/GNUmakefile +++ b/UI/MainUI/GNUmakefile @@ -14,6 +14,7 @@ MainUI_OBJC_FILES += \ SOGoUserHomePage.m \ SOGoBrowsersPanel.m \ SOGoMicrosoftActiveSyncActions.m \ + SOGoAPIActions.m \ ifeq ($(saml2_config), yes) MainUI_OBJC_FILES += SOGoSAML2Actions.m diff --git a/UI/MainUI/SOGoAPIActions.m b/UI/MainUI/SOGoAPIActions.m new file mode 100644 index 000000000..3b2114021 --- /dev/null +++ b/UI/MainUI/SOGoAPIActions.m @@ -0,0 +1,75 @@ +/* + Copyright (C) 2014-2016 Inverse inc. + + This file is part of SOGo. + + SOGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + SOGo 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 Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with SOGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + + +#import +#import + +#import +#import +#import +#import + +#import + +@interface SOGoAPIActions : WODirectAction +@end + +@implementation SOGoAPIActions + +// +// Invoked on POST actions +// +- (WOResponse *) sogoAPIAction +{ + WOResponse *response; + WORequest *request; + NSBundle *bundle; + NSException *ex; + id dispatcher; + Class clazz; + + request = (WORequest *)[context request]; + response = [context response]; + [response setStatus: 200]; + [response setHeader: @"text/plain; charset=utf-8" forKey: @"content-type"]; + + bundle = [NSBundle bundleForClass: NSClassFromString(@"SOGoAPIProduct")]; + clazz = [bundle classNamed: @"SOGoApiDispatcher"]; + dispatcher = [[clazz alloc] init]; + + ex = [dispatcher dispatchRequest: request inResponse: response context: context]; + + //[[self class] memoryStatistics]; + + if (ex) + { + return [NSException exceptionWithHTTPStatus: 500]; + } + + RELEASE(dispatcher); + + [[SOGoCache sharedCache] killCache]; + + return response; +} + +@end diff --git a/UI/MainUI/product.plist b/UI/MainUI/product.plist index 69844cc82..1cc3dca2d 100644 --- a/UI/MainUI/product.plist +++ b/UI/MainUI/product.plist @@ -118,6 +118,11 @@ actionClass = "SOGoMicrosoftActiveSyncActions"; actionName = "microsoftServerActiveSync"; }; + SOGoAPI = { + protectedBy = ""; + actionClass = "SOGoAPIActions"; + actionName = "sogoAPIAction"; + }; casProxy = { protectedBy = ""; pageName = "SOGoRootPage"; diff --git a/UI/WebServerResources/js/vendor/punycode.js b/UI/WebServerResources/js/vendor/punycode.js index 5b81f1763..8fdd43303 100644 --- a/UI/WebServerResources/js/vendor/punycode.js +++ b/UI/WebServerResources/js/vendor/punycode.js @@ -422,7 +422,7 @@ const punycode = { * @memberOf punycode * @type String */ - 'version': '2.3.1', + 'version': '2.1.0', /** * An object of methods to convert from JavaScript's internal character * representation (UCS-2) to Unicode code points, and back.