Git Product home page Git Product logo

cammintegrationportal's Introduction

camm Integration Portal

based on camm Web-Manager

Components

  • libraries/base - sources for the main library NuGet CompuMaster.CIP.Core
  • libraries/adminarea - administration area library sources NuGet CompuMaster.CIP.AdminWeb
  • libraries/components - additional required components
  • libraries/smarteditor - smart web editor component as a trivial editor for web pages and a sample web application project NuGet CompuMaster.CIP.SmartEditor.PlainText NuGet CompuMaster.CIP.SmartEditor.CommonMark NuGet CompuMaster.CIP.SmartEditor.SmartEditorUpload
  • database - database setup/patching scripts
  • setup and distribution - tools for database update and other topics
  • webs - web script files for running your instance of the software

cammintegrationportal's People

Contributors

jochenwezel avatar jochenhwezel avatar kohelet-net-admin avatar

Stargazers

 avatar  avatar

Watchers

James Cloos avatar  avatar Sven Clemens avatar  avatar  avatar tschaedler avatar

Forkers

vb6hobbyst7

cammintegrationportal's Issues

SmartEditor content encoding wrong

Following text will be HtmlEncoded but it already HTML


            <div>
                <h1>Signware<br><!-- initial text -->
                    <img border="0" hspace="0" src="images/h1_line.gif" width="343" height="1"></h1>
                <h2 style="margin-top: 0">Kommunikation &amp; Werbung</h2>
            </div>
            <div>
				<ul>
                    <li><a href="#" target="_blank">File 1</a></li>
					<li><a href="#" target="_blank">File 2</a></li>
                </ul>
            </div>

in preview mode:
image

As soon as I add some text in the very first position, the whole text is handled correctly for proper HTML encoding:
image
will lead to
image

As by my tests: starting with 0 to 3 leading space chars has got another logic as there are 4 or more leading space chars

after login, ASP session goes invalid after a while

Reproduction steps:

  • successfull user login with ASP.NET and classic ASP enabled on server
  • ASP.NET and ASP stay logged in for several hours/days
  • but at some point, ASP sessions won't be refreshed any more, some hours later, the user is not logged on at classic ASP (while still everything stays okay with ASP.NET)

DownloadHandler error on creating file

System.Exception: Unexpected error while creating file system object
bei CompuMaster.camm.WebManager.Tools.IO.Junctions.Create(String ExistingFileSystemObject, String NewLinkingFileSystemObject, LinkTypeDirectives LinkType) in G:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\CompuMaster.camm.WebManager.Tools.IO.Junctions.vb:Zeile 200.
bei CompuMaster.camm.WebManager.DownloadHandler.GetDataToRecordAndProcess(DownloadLocations downloadLocation, String pathInDownloadLocation, Boolean overwrite, Boolean zipFilesFirst, String zipArchiveName, Boolean enforceDownload) in G:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\DownloadHandler.vb:Zeile 1505.

On 1st time creation (by CWX app), this exception is thrown, on 2nd CWX page access, the app (and/or CWM DH) can continue.

Probably a bug of CWM DH or from Win system/NTFS volume/...?

Centralize configuration

required for dropping requirement of sysdata/config.vb and custom_internationalizations.vb

  • admin/user_clone.aspx: override for AdditionalFlagAllowCopy (requires maybe RegEx)
  • Configuration.UserCloneExludedAdditionalFlags / WMSystem.UserCloneExludedAdditionalFlags
  • WMPasswordSeverities
  • WMNotifications
  • Internationalizations

Redesign of whole security concept

Major improvements shall be

  • improved data integrity after deleting items sometimes left over some foreign-key-items
  • performance, especially for
    • navigation data lookup
    • IsUserAuthorized checks
  • Allow and Deny rules for memberships
  • Allow and Deny rules for authorizations
  • pave the way for (multiple) membership inheritance
    • inheritance of completely calculated membership sets, so that inheriting from a 2nd group with a deny rule for user A doesn't automatically deny user A being Allow-member of 1st group
  • pave the way for (multiple) authorizations inheritance
    • inheritance of all Allow and Deny rules, so that inheriting from a 2nd security object with a deny rule for user A does automatically deny user A being authorized of 1st security object
  • pave the way for splitting application objects into security objects + 0...n navigation items

SmartEditor Pages: Typical user errors

Sometimes the user doesn't know how to edit a page content correctly completely, because the user forget's/doesn't know that the same content must be edited in/for another additional market or server group, too.

That's why there should be an optional editor note visible in edit mode with a customizable text.
The editor note should be an attribute of the SmartEditor tag, e.g.

<... editornote="Please always update in all languages and on intranet+extranet" ...>

Auths Admin: inheriting security objects

Display of securityobjects currently:
image

  • Instead of "application ID" better show "security object ID"
  • Be able to display 0 or 1..n security objects from which can be inherited (if DB version supports that)
  • be able to add inheritions from additional security objects also if already 1 inherition setup is configured
    image
  • be able to remove the desired inherition setup also if 2 or more inherition setups are configured
    image

Double Opt-In/Out

After a user registers, he should receive an email containing a link to activate his account.

Status quo

Currently, there is just the following:

  • No-Opt
  • removal only via responsible security administrator

Further development

In any case, the following setting must be configurable in administration section

  • Settings page/entry for user confirmation type (None/Double-Opt-In/Double-Opt-Out)
  • Confirmation type and step with timestamp must be stored in user profile

Bear in mind

  • already existing user accounts won't be validated/confirmed without explicit re-validation (administration feature might be another separate feature request)
  • Imported user accounts (see administration pages >> users >> import users) never start a validation process

Double-Opt-In

  • Send E-Mail containing removal link
  • After logging in, provide a delete account for the user in navigation >> Your Profile

Double-Opt-Out

(Possible) Todos

  • Create/Adjust email templates
  • Send E-Mail containing activation link
  • Account should remain deactivated until the user opens the activation link
    • Indicate in the Administration UI whether a user is deactivated or pending registration.
  • Cleanup of accounts that have not been activated within a certian period (e. g. 24 hours)
  • Administrator should be able to choose whether to use the current system (account is immediatly activated ) or the new system (activation link).

(To be expanded, also see/review email of KH)

Database deadlock situation found

There might be deadlock situations when running the asynchronous webcron cleanup tasks:

CompuMaster.camm.WebManager.Tools.Data.DataQuery.AnyIDataProvider+DataException:   Data layer exception 

System.Data.SqlClient.SqlException: Die   Transaktion (Prozess-ID 52) befand sich auf Sperre Ressourcen aufgrund eines   anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer   ausgewählt. Führen Sie die Transaktion erneut aus. 
at   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean   breakConnection, Action`1 wrapCloseInAction) 
at   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject   stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) 
at   System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand   cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler,   TdsParserStateObject stateObj, Boolean& dataReady) 
at   System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() 
at   System.Data.SqlClient.SqlDataReader.get_MetaData() 
at   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior   runBehavior, String resetOptionsString, Boolean isInternal, Boolean   forDescribeParameterEncryption) 
at   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior   cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async,   Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry,   SqlDataReader ds, Boolean describeParameterEncryptionRequest) 
at   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior   cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method,   TaskCompletionSource`1 completion, Int32 timeout, Task& task,   Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) 
at   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior   cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 
at   System.Data.SqlClient.SqlCommand.ExecuteScalar() 
at   CompuMaster.camm.WebManager.Tools.Data.DataQuery.AnyIDataProvider.ExecuteScalar(IDbCommand   dbCommand, Automations automations) in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\CommonTools\Tools.Data.vb:line   317 
--- End of inner exception stack trace --- 
at   CompuMaster.camm.WebManager.Tools.Data.DataQuery.AnyIDataProvider.ExecuteScalar(IDbCommand   dbCommand, Automations automations) in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\CommonTools\Tools.Data.vb:line   319 
at CompuMaster.camm.WebManager.Log.DeleteExpiredEntries(Int32   maxNumberOfDeletedRows) in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\SubClasses\log.vb:line   1887 
at CompuMaster.camm.WebManager.Log.CleanUpLogTableInternal() in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\SubClasses\log.vb:line   1915 
at CompuMaster.camm.WebManager.Log.CleanUpLogTable() in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\SubClasses\log.vb:line   1898 
at   CompuMaster.camm.WebManager.WebServices.CoreWebCronJobRunner.RunCleanups() in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WebServices\CoreWebCronJobs.vb:line   256 
at   CompuMaster.camm.WebManager.WebServices.CoreWebCronJobRunner.ExecutePendingProcesses(DateTime   requestStartTime, Int32 maxTotalSecondsTimeout) in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WebServices\CoreWebCronJobs.vb:line   153 

CommandType: Text 
CommandText: DELETE FROM [dbo].[Log] WHERE ID IN (   SELECT TOP 500 ID FROM dbo.Log INNER JOIN (SELECT ValueInt as ConflictTypeID,   ValueDecimal as RetentionDays FROM dbo.System_GlobalProperties WHERE   PropertyName='ConflictTypeAge') AS RetentionConfig ON Log.ConflictType =   RetentionConfig.ConflictTypeID WHERE LoginDate < DateAdd(dd,   -COALESCE(RetentionDays, @DefaultRetentionDays), GETDATE()) ) SELECT @@ROWCOUNT   
Parameters: Parameter 0: @DefaultRetentionDays: 1460   
System.Data.SqlClient.SqlException detail data: HelpLink.ProdName=Microsoft   SQL Server 
System.Data.SqlClient.SqlException detail data:   HelpLink.ProdVer=10.50.6220 
System.Data.SqlClient.SqlException detail data:   HelpLink.EvtSrc=MSSQLServer 
System.Data.SqlClient.SqlException detail data:   HelpLink.EvtID=1205 
System.Data.SqlClient.SqlException detail data:   HelpLink.BaseHelpUrl=http://go.microsoft.com/fwlink   
System.Data.SqlClient.SqlException detail data: HelpLink.LinkId=20476

SmartEditors: "+" in Text always dropped

image
will be shown in preview as
image
and when going back to edit mode, content is modified to
image
(two space chars still available, but the plus char (+) ist missing, see yellow mark above)

Data protection cleanup: Deleted users and minimal data

Data protection cleanup should keep a minimal amount of data, because some applications might refer to those user accounts: in case data protection is very aggressive and removes absolutely all user account data, an application might get a UserNotFoundException, but it must be e.g. a UserHasBeenDeletedException or empty user name/data (depending on lookup/search methods/arguments)

For this, there is the need to save some minimal data for all user accounts in log_users:

  • exiting+removed user accounts (e.g. by patch-sql: IsDeletedUser="0")
  • on-remove of user account: IsDeletedUser="1"
  • data protection setup page: never provide flag "IsDeletedUser" with a checkbox

CWX

This is more errors in current CWX oder zumindest auf PoliciesCWX:

  1. Download handler FAILED to create a hard link: possibly already fixed in latest CWM version - maybe related to #38
  2. Text editor on save/quit with loaded HTML content (e.g. home.htm): ASP.NET RequestValidation fails, therefore encoding required BEFORE submitting of editor content - possibly see similar mechanism implemented in SmartPlainTextHtmlEditor
  3. Upload button leads to errror because upload DLL not available (any more) and/or required changes in web.config
  4. update CWM version and remove obsolete dependencies (Rad*, etc.)
  5. navigation component obsolete - to be replaced for browser compatibility

Exception details to point 1:

System.Exception: Win32 Fehlermeldung: 'System.ComponentModel.Win32Exception (0x80004005): Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist'
Hardlink-Sourcefile: 'C:\inetdata\...file_transfer\abc_03_15 x3.pdf'
Hardlink-Targetfile: 'C:\inetpub\...\system\downloads\3Z_l2vCEttYKt4NrqaxQqQtt\cache\cwx\aS5qZs4w_WfwwCWUZYKSYQtt\abc_03_15 x3.pdf'
bei CompuMaster.camm.WebManager.Tools.IO.Junctions.Create(String ExistingFileSystemObject, String NewLinkingFileSystemObject, LinkTypeDirectives LinkType) in G:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\CompuMaster.camm.WebManager.Tools.IO.Junctions.vb:Zeile 142.
bei CompuMaster.camm.WebManager.DownloadHandler.GetDataToRecordAndProcess(DownloadLocations downloadLocation, String pathInDownloadLocation, Boolean overwrite, Boolean zipFilesFirst, String zipArchiveName, Boolean enforceDownload) in G:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\DownloadHandler.vb:Zeile 1505.

Easier integration into project

Maybe CIP could be separated into separately installable modules - to be installed using tools like nuget, bower, npm, browserify or similar

CIP

  • cammWM.dll
  • cammWM.Admin.dll
  • CIP4.Core
    • cammWM.dll
  • CIP4.Web.Core
    • CIP.Core
    • /system/cammWebManager.ascx
  • CIP4.Web.RootWeb
    • CIP.Web.Core
    • /sysdata/config.vb
    • /sysdata/custom_internationalization.vb
    • /system/* w/o admin/, install/install.aspx
    • /sysdata/* w/o admin/, install/install.aspx
  • CIP4.Web.AdminArea
    • CIP.Web.RootWeb
    • cammWM.Admin.dll
    • /system/admin/, install/install.aspx
    • /sysdata/admin/, install/install.aspx
  • CIP4.Web.Install
    • CIP.Web.RootWeb
    • /system/admin/install/install.aspx
    • /sysdata/admin/install/install.aspx
  • CIP4.Web.Samples.MiniModules
    • CIP.Web.RootWeb
    • /modulesamples
  • CIP4.Web.Upload
    • CIP.Web.RootWeb
    • /system/...upload.aspx & Co.
  • CIP4.Web.PlainTextEditor & CommonMarkupEditor
    • DLL
    • CIP4.Web.Upload
  • CIP4.Web.RootWeb.Asp
    • /sysdata/*.asp
    • /system/*.asp
  • CIP4.Web.RootWeb.Php5
    • /sysdata/.php
    • /system/.php
  • CIP4.LdapServer
    • CIP.Core
    • ...

Deadlock situation at Log.DeleteExpiredEntries

Following exception is thrown:

CompuMaster.camm.WebManager.Tools.Data.DataQuery.AnyIDataProvider+DataException:   Data layer exception ---> System.Data.SqlClient.SqlException: Die   Transaktion (Prozess-ID 59) befand sich auf Sperre Ressourcen aufgrund eines   anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer   ausgewählt. Führen Sie die Transaktion erneut aus. 
bei System.Data.SqlClient.SqlConnection.OnError(...
bei CompuMaster.camm.WebManager.Tools.Data.DataQuery.AnyIDataProvider.ExecuteScalar(IDbCommand   dbCommand, Automations automations) in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\CommonTools\Tools.Data.vb:Zeile   317. 
--- Ende der internen Ausnahmestapelüberwachung --- 
bei   CompuMaster.camm.WebManager.Tools.Data.DataQuery.AnyIDataProvider.ExecuteScalar(IDbCommand   dbCommand, Automations automations) in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\CommonTools\Tools.Data.vb:Zeile   319. 
bei CompuMaster.camm.WebManager.Log.DeleteExpiredEntries(Int32   maxNumberOfDeletedRows) in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\SubClasses\log.vb:Zeile   1887. 
bei CompuMaster.camm.WebManager.Log.CleanUpLogTableInternal() in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\SubClasses\log.vb:Zeile   1915. 
bei CompuMaster.camm.WebManager.Log.CleanUpLogTable() in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\SubClasses\log.vb:Zeile   1898. 
bei   CompuMaster.camm.WebManager.WebServices.CoreWebCronJobRunner.RunCleanups() in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WebServices\CoreWebCronJobs.vb:Zeile   256. 
bei   CompuMaster.camm.WebManager.WebServices.CoreWebCronJobRunner.ExecutePendingProcesses(DateTime   requestStartTime, Int32 maxTotalSecondsTimeout) in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WebServices\CoreWebCronJobs.vb:Zeile   153. 

CommandText:

DELETE 
FROM [dbo].[Log] 
WHERE ID IN ( 
  SELECT TOP 500 ID 
  FROM dbo.Log 
  INNER JOIN (
      SELECT ValueInt as ConflictTypeID, ValueDecimal as RetentionDays 
      FROM dbo.System_GlobalProperties 
      WHERE PropertyName='ConflictTypeAge'
    ) AS RetentionConfig 
    ON Log.ConflictType = RetentionConfig.ConflictTypeID 
    WHERE LoginDate < DateAdd(dd, -COALESCE(RetentionDays, @DefaultRetentionDays), GETDATE()) 
  ) 
SELECT @@ROWCOUNT 

Smarteditor: Upload doesn't work + present files not visible

In following screenshot, there are several issues visible:
image

Editor tag is configured as follows:

<cammWebEdit:SmartCommonMarkEditor marketlookupmode="0" 
	Images="images" Docs="docs"
	ImagesAllowedFileExtensions="*.jpg,*.gif"
	DocumentsAllowedFileExtensions="*.pdf,*.txt,*.doc,*.docx,*.rtf,*.xls,*.xlsx,*.ppt,*.pptx"
	...
  1. loremipsum.txt can't be uploaded, error message appears (alternative of ImagesAllowedFileExtensions="jpg,gif" DocumentsAllowedFileExtensions="pdf,txt,doc,docx,rtf,xls,xlsx,ppt,pptx" doesn't work, too)
  2. error message shows quotation marks in between
  3. documents list is empty, but 2 files .pdf are in the docs directory

Detect and warn insecure web.config settings

If web.config has one of the following settings, a daily warning mail should be sent on ApplicationInit or even better on EndOfFirstRequest

  • for root web app
  • for all web apps

Watch out for settings

  • compilation debug=true
  • customErrors=Off
  • appSetting NotifyOnApplicationException<2 (as long as there is no setting for NotifyOnMissingExceptionHandling=Off (default: On))
  • missing CwmHttpApplication (as long as there is no setting for NotifyOnMissingExceptionHandling=Off (default: On))

CommonMarkEditor doesn't support target attribute on link creation on document insert

The document insertion form shows as follows

image

There are 2 general options available

  1. Hide the line with the dropdown box for the target attribute
  2. CommonMark must support the syntax for adding additional link attributes

For option 1

The data referenced by the token must transport additional details on which properties are supported/unsupported (e.g. in this case, target is NOT supported)

For option 2, one or both of these points must see progress

Editor default content by Html with MarketLookupMode leaves Neutral market empty

Given is a editor as following:

    <cammWebEdit:SmartCommonMarkEditor id="editor" runat="server" DocumentsUploadPath="docs" ImagesUploadPath="images" 
        DocumentsAllowedFileExtensions=".txt,.doc,.rtf,.pdf,.xls,.ppt" ImagesUploadSizeMax="1512000"
        DocumentsUploadSizeMax="1512000" marketlookupmode="Language" securityobjecteditmode="@@Supervisors">{enter here...}</cammWebEdit:SmartCommonMarkEditor>
some text
</cammWebEdit:SmartCommonMarkEditor>        

No content versions have been created into the database, yet.

Reproduction

  1. OK: The current UI market was 2 when initially opening the editor control
  2. OK: the editor control loads from DB, sees there is no data for it and loads default content "some text"
  3. WARNING: the editor control has already created
    • market 0 / Neutral / All -> empty content
    • market 2 / German -> loaded with default text
  4. WARNING: the author typically sees everything is okay and saves and activates - but don't realize there is a neutral market with empty content!!

Suggestion

if the default text is loaded, the default market should not be the current market in every situation

  • OK: market lookup mode None/SingleMarket: the single market 0
  • OK: market lookup mode Language+Market: the current UI market
  • OK: forced language/market (see control property and/or configuration setting): the forced language/market
  • TODO: market lookup mode BestMatchingLanguage: push the default text into market 0 instead of current UI market and don't create the current UI market as data automatically (the user should choose if he wants to)

Initial inner HTML of SmartEditors rendered as Html-Encoded

Following tag (no versions have been created, yet)

<cammWebEdit:SmartCommonMarkEditor marketlookupmode="0" 
			ID="MainEditor" runat="server">
<!-- initial text -->
<div>some text</div>

will be shown in client HTML encoded (But expected correct behaviour: HTML should be considered as HTML (not being encoded))

<!-- initial text -->
<div>some text</div>

The deployed page source at client is as follows:

&lt;!-- initial text --&gt;
&lt;div&gt;some text&lt;/div&gt;

User deletion fails

in a customer 'V' instance, delete by SQL fails with following command/error:
image

Editor docs/imgs insert/upload feature should only be active if at least 1 docs/upload paths have been specified

Following control declaration is without any property setup for images/docs and no upload script url:

<cammWebEdit:SmartCommonMarkEditor id="testeditor" runat="server" 
    NoteForEditor="<em>Test for no upload support</em>"
    marketlookupmode="Language" securityobjecteditmode="@@Supervisors">{enter here...}
</cammWebEdit:SmartCommonMarkEditor>

But the img/doc insert/upload buttons are available (and should not be there)
image

Remove necessarity of sysdata/config.vb & Co.

To reduce file dependency of the many apps of a typical portal / application farm, JIT configuration should be reduced to the max to static-only customization in files, everything else into database

  • Custom internationalization
  • Custom password policies
  • Dynamic/Alternative ServerHost setup
  • Dynamic/Special URLs

AdminArea: ViewRelationships

Feature request for configuration and displaying of administration subsecuritydelegation "ViewRelations"

  • for Groups/Memberships
  • for SecurityObjects/Authorizations

Editor warning before loosing changes

When editing the document in a first language, the author might somes want to switch over to another language/market/version and check a few things. Coming back to the first language, the content is reset to the last saved status:
image

Before the user looses any data by using the 2 drop down lists for market/language or version and if there is any unsaved data, there might be a javascript popup asking if the user really wants to proceed without saving

(Another option would be to save those changes into the user session - when the user comes back to the very same market/version, the data from the session can be reloaded
Disadvantage: if the user closes the session, all changes (the user might think they are done and saved) are not saved and so are permanently lost.)

Admin area: flags with sensitive data must be starred (******) / write-only

The user profile sometimes contains sensitive data in defined flags, that's why a central setup must ensure that no security administrator, supervisor, etc. can view/read that sensitive data.

Suggested is a general property declaring extended properties for additional flags (by flag name), e.g.

  • sensitive data (bool)
  • data type (int, bool, etc.)
  • maybe more in future

Subjects of change are:

  • API: UserInfo object requires new AdditionalFlag collection which provides access to the extended data (see above list + optionally: Is(Hidden)SystemFlag)
  • Admin area: UI for setup of extended properties of additional flags

Several customizings might be to be removed after enabling this feature.

Warning email missing when lib is older than database

The user will see following error at website:
image

When enabling debug output, the following error details appear:

Serverfehler in der Anwendung /corporate_policies.

Database has a newer build no. than this application. Access denied to prevent data corruption.

Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde. 

Ausnahmedetails: System.Exception: Database has a newer build no. than this application. Access denied to prevent data corruption.

Quellfehler: 

Beim Ausführen der aktuellen Webanforderung wurde einen unbehandelte Ausnahme generiert. Informationen über den Ursprung und die Position der Ausnahme können mit der Ausnahmestapelüberwachung angezeigt werden.

Stapelüberwachung: 


[Exception: Database has a newer build no. than this application. Access denied to prevent data corruption.]
   CompuMaster.camm.WebManager.WMSystem.CheckCompatibilityToDatabaseByBuildNumber() in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\WMSystem.vb:1528
   CompuMaster.camm.WebManager.WMSystem.get_ConnectionString() in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\WMSystem.vb:1484
   CompuMaster.camm.WebManager.WMSystem.InitializeEnvironment() in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\WMSystem.vb:1373
   CompuMaster.camm.WebManager.WMSystem.set_CurrentServerIdentString(String Value) in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\WMSystem.vb:1325
   CompuMaster.camm.WebManager.Controls.cammWebManager._LoadConfiguration() in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\Controls\cammWebManager.vb:97
   CompuMaster.camm.WebManager.Controls.cammWebManager.System_Init() in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\Controls\cammWebManager.vb:133
   CompuMaster.camm.WebManager.Controls.cammWebManager.OnWebManagerInit() in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\Controls\cammWebManager.vb:169
   CompuMaster.camm.WebManager.WMSystem.PageOnInit(Object sender, EventArgs e) in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\WMSystem.vb:1657
   System.Web.UI.Control.OnInit(EventArgs e) +109
   System.Web.UI.Control.InitRecursive(Control namingContainer) +166
   System.Web.UI.Control.InitRecursive(Control namingContainer) +379
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +464

Versionsinformationen: Microsoft .NET Framework-Version:4.0.30319; ASP.NET-Version:4.6.1637.0

This is the assembly version:
image

Separation of previously bundled libraries

Existing project references:

  • ComponentArt ➡️ not used in most custom projects ➡️ subject of complete removal from base lib
  • SmartWebEditor (sWcms) ➡️ to separate, but keep basic feature-set to keep binary compatible

Editor SmartUpload default location should default to current application

The SmartUpload location currently defaults to
/system/modules/smartwcms/
and also to
/sysdata/modules/smarteditor/

but should better default to
~/system/se-webupload/
as it's currently deployed by NuGet package cammWM.SmartEditorUpload

Locations to change are at least:

  • Html-Resources (bug)
    image
  • Properties for UploadFormUrl (feature request)
  • ...? (feature request)

Failure notification on successful workflow

The Single-Sign-On module failed creating a new camm Web-Manager account for "..." (...) from the external ADS user account "..."

This may be caused by unsufficient data in the ADS account. Please check the details for further analysis!

There was following error:
System.Threading.ThreadAbortException: Der Thread wurde abgebrochen.
bei System.Threading.Thread.AbortInternal()
bei System.Threading.Thread.Abort(Object stateInfo)
bei System.Web.HttpResponse.End()
bei CompuMaster.camm.WebManager.Pages.Login.Utils.LogonToAllOtherServers(WMSystem cammWebManager, String javaScriptCodeWhenLoginFailed) in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\page_login.vb:Zeile 419.
bei CompuMaster.camm.WebManager.Pages.Login.CheckLogin.LogonToAllOtherServers(String javaScriptCodeWhenLoginFailed) in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\page_login.vb:Zeile 635.
bei CompuMaster.camm.WebManager.Pages.Login.CheckLogin.LogonToAllOtherServers() in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\page_login.vb:Zeile 629.
bei CompuMaster.camm.WebManager.Pages.Login.CheckLogin.ValidateUserCredentialsAndLogon() in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\page_login.vb:Zeile 610.
bei CompuMaster.camm.WebManager.Pages.Login.LoginWithActiveDirectoryUser.LoadPageData() in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\page_login_sso.vb:Zeile 250.

CWX & DownloadHandler: Providing file initially fails (2nd attempt with success)

Reported error:

System.Exception: Win32 Fehlermeldung: 'System.ComponentModel.Win32Exception (0x80004005): Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist'
Hardlink-Sourcefile: 'C:\src\cwx\fte\vw\123rf Bilder.zip'
Hardlink-Targetfile: 'C:\inetpub\www\system\downloads\3Z_l2vCEPxYKt4NteaxQqQtt\cache\cwx\aS5ISs4w_WfwwCWWZqKSYQtt\123rf Bilder.zip'
bei CompuMaster.camm.WebManager.Tools.IO.Junctions.Create(String ExistingFileSystemObject, String NewLinkingFileSystemObject, LinkTypeDirectives LinkType) in G:\svn\products\cwm\libraries\base\cammWM\CompuMaster.camm.WebManager.Tools.IO.Junctions.vb:Zeile 142.
bei CompuMaster.camm.WebManager.DownloadHandler.GetDataToRecordAndProcess(DownloadLocations downloadLocation, String pathInDownloadLocation, Boolean overwrite, Boolean zipFilesFirst, String zipArchiveName, Boolean enforceDownload) in G:\svn\products\cwm\libraries\base\cammWM\DownloadHandler.vb:Zeile 1505

Editor document upload form: target with custom value

Empty value support (bug)

The dropdown list currently shows the 4 valid values:
image

There must be the option to NOT specify it, so a blank/empty value must be added which should be the default setting.

Custom value support (enhancement)

Additionally, the target might be a custom value, there should be a textbox for supporting custom target names, e.g. mainframe

AdditionFlags with sensitve data

Currently, strong typed additional flags are already supported:
image

But it would be great to use e.g. another type "xyz{securestring}" for declaring special additional flags as write-only-flags -> never visible/readable in UI, write-only access in UI -> readable only by API calls

New search concept

Search using CMM crawler but with index for each Server Group and with security Information descriptor on each record

Cwm.Page implements Standard Interface

  • IsCrawlerRequest
  • CrawlerRequest
    • SiteMapByVisitor
      • Anonymous
      • Public
      • IndividualUser -> causing crawler to scan and save Content for all users separately -> warning: expensive
      • AuthorizationForSecurityObject(secObj as string)
    • SecurityObjectsInvolved as String()
    • RecordByVisitor
    • depends on market/language/None (Default market or must-override)
    • all methods are functions executed on crawlerrequest - no additionalmcode should be executed if a Standard user opens a page
    • app's initial page usually provides the crawler Setup, addional pages only Need it if additional crawler Setup has to be provided (i expect this Situation to be very seldom)

CrawlerRecord class, as List

  • PlainTextContent
  • TargetUrl
  • TargetReference (app specific value, e.g. an object no. - required for in-app-searches)
  • RelatedToMarket
  • AvailableForSecurityObject
  • MetaFieldName (nothing for Default Content, a string for a meta field Name)
  • MetaFieldType (see additional flag types)
    Without CrawlingSetup Within an app, crawler crawls for anonymous only stops on web forms (no submit)

IsCrawlerRequest checks for user Agent with individual token per crawler-user

cwm Needs an additional user for doing the crawling Jobs

crawler crawls

  • on configured Server Groups (with auto-replace rules for Server names in URLs in case crawler Needs to scan at a virtual host which has got another official Name, typically when crawler runs at Intranet but for Extranet Server Group)
  • entry pages are
    • servergroupfficialurl
    • auto-completed navurls for all available nav items
  • every activated market
  • as webslave Service recommended, as core webservice Task by cwm trigger for shared Hostings without webslave machine (webcron or jit-page-access-cron)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.