DLSconnect Drupal 6 module allows to intgrate drupal with DLS (Distance Learning System) Servers.
This is a very special module and maybe used for only one or a few customers of the company e/t/s (see DLS-link above). But it's a demonstration of a strategy to secure SOAP communications with short time passwords which are pushed into a LDAP database where the DLS Server is checking the passwords from the other side.
For the LDAP operations a custom hook can be used maybe for direct PHP LDAP commands or the API of LDAPcontrol module can be used.
The modules DLSconnect and LDAPcontrol are already used on the Q-Online community platform (more information on sandbox page).
Quicklinks:
- Sandbox: http://drupal.org/sandbox/C_Logemann/1245466
- Git: git clone --branch 6.x-1.x http://git.drupal.org/sandbox/C_Logemann/1245466.git dlsconnect
- pareview: http://ventral.org/pareview/httpgitdrupalorgsandboxclogemann1245466git
New Reviews of other projects:
- http://drupal.org/node/1343150#comment-5873364
- http://drupal.org/node/1470288#comment-5873126
- http://drupal.org/node/1474990#comment-5870580
Comments
Comment #1
dirk.westrup commentedHi,
we are already using this module to connect our community with a DLS server (www.q-online.de). The module works fine, the short time passwords (nearly one time, because it is only valid through one soap request and randomly changed afterwards) help us to protect our Drupal installation, because some DLS Server are not configured for using a SSL connection.
So, I hope, that permission will be granted to create a full dlsconnect project.
Kind regards,
Dirk
Comment #2
klausi* Git release branch missing, see http://drupal.org/node/1015226
* lines in README.txt should not exceed 80 characters
* Remove all old CVS $Id tags, not needed anymore
* "// special client soap user: have to be created manually on DLS server" comments should be on their own line, start capitalized and end with ".", see http://drupal.org/node/1354#inline
* "$parameters = array( 'ApiLogin' => $apilogin," the first array entry should be on a separate line
* dlsconnect_init(): Are you sure you need hook_init()? It is called on literally every page request, even if your module is not needed on that page.
Comment #3
c-logemannHello klausi,
I will work on all points and report here.
Thank you for the review!
Carsten
Comment #4
misc commented@C_Logemann has been contacted to ask if the application is abandoned.
http://drupal.org/node/894256
Comment #5
c-logemannHello,
sorry I was very busy in other customer projects.
Now I am working on this module again.
kind regards
Carsten
Comment #6
c-logemannEverything of #2 is fixed except for the last point:
You are right with avoiding hook_init(). I have a new strategy to handle settings but this will have an influence on the webproject where dlsconnect is already in use. So this is my plan for the future:
Comment #7
patrickd commentedPlease don't assign the issue to your self, only the current reviewer should do this.
Sorry for the delay,
as there are currently many applications in queue we need more reviewers,
so think about getting a review bonus and we will come back to your application sooner.
Comment #7.0
c-logemannadded pareview direct link
Comment #8
c-logemannadded PAReview: review bonus
Comment #9
itsekhmistro commentedHi,
There are still some errors in automated review http://ventral.org/pareview/httpgitdrupalorgsandboxclogemann1245466git :
Manual review:
1) The function dlsconnect_block
It doesn't look as a good idea to identify these blocks by number. Please, to prevent confilcts define some const like
define('DSLCONNECT_CLIENT_INFO', 'dslconnect_client_info');
and make it like
2) the function dlsconnect_init
It probably makes sence to replace it with drupal_alter(...), don't you think?
Apart from mentioned, it looks ok for me.
Comment #10
c-logemann@itsekhmistro
Thank you for reviewing.
* About major changes in this module
As described in comment #6 the module is already used in a productive project and I will do no major changes in branch 6.x-1.x.
There will be a new Branch 6.x-2.x in near future but there is currently no active test system.
Testing and developing of this module needs some special infrastructure (LDAP-Server and a DLS-Server).
The old test system at my customers infrastructure is not longer available and a new is not ready yet.
The new thing concerning comment #6 is another strategy of Moodle integration. See MOODLEconnect Sandbox: http://drupal.org/sandbox/C_Logemann/1460070
* About the reported errors in dlsconnect_feature.features.content.inc
The analyzer is reporting "Array indentation error". But this is the content of an exported cck field which needs a line break as a delimiter of the next option.
I already discussed this with Patrick. In his opinion I don't have to fix coding issues of features.
In the next version I will remove the features submodule and will make the usage of content types and fields more flexible as I already realized in MOODLEconnect.
* About dlsconnect_block
I think it's normal block programming in Drupal 6. Are you sure that this new and good D7 strategy is working in D6?
http://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/h...
* About hook_init()
In MOODLEconnect I have already changed this strategy. I will also avoid hook_init() this in the next version. drupal_alter() is new to me. I will take a look, how this can help.
Comment #10.0
c-logemannAdded "Reviews of other projects"
Comment #10.1
c-logemannReview link added
Comment #11
misc commentedI do not think that you have to take care of the errors that the Feature module creates.
I have to agree with @itsekhmistro on dlsconnect_block - here you could get conflicts with other modules.
Comment #12
c-logemann@MiSc and @itsekhmistro,
can you give me an example where this strategy is used in a Drupal 6 module.
Even D6 core modules are working in this way. For example the user.module (comments and blank lines removed):
Comment #13
itsekhmistro commentedAccording to http://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/h...
The values of delta can be strings or numbers, but because of the uses above it is preferable to use descriptive strings whenever possible, and only use a numeric identifier if you have to (for instance if your module allows users to create several similar blocks that you identify within your module code with numeric IDs).
It's only a suggestion.
Comment #14
itsekhmistro commentedAccording to http://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/h...
The values of delta can be strings or numbers, but because of the uses above it is preferable to use descriptive strings whenever possible, and only use a numeric identifier if you have to (for instance if your module allows users to create several similar blocks that you identify within your module code with numeric IDs).
It's only a suggestion.
Comment #15
c-logemannOk, using descriptive strings is possible in drupal 6.
I think it's a good strategy to avoid conflicts in a module especially if you are using more than 3 blocks.
I will keep this in mind for future versions and other projects.
But there is no risk of conflict with other modules:
Delta values only need to be unique within your module
Comment #15.0
c-logemannAdded a review link.
Comment #15.1
c-logemannimprovement of description and added git clone command
Comment #16
misc commentedI stand corrected.
Comment #17
klausimanual review:
$output .= '<li class="dlsconnect-listitem-clientname">' . t('DLS client') . ': ' . $clientdata['title'] . '</li>';": this is vulnerable to XSS exploits if the title contains script tags or what not. You must sanitize user provided input before printing it, see http://drupal.org/node/28984Removing review bonus tag, you can add it again if you have done another 3 reviews of other projects.
Comment #18
c-logemann@klausi,
Thank you for your manual review work.
This was my first development project with SOAP and I started this module with coding examples of the DLS Programmers based on NUSOAP. On my next project with SOAP I will keep PHP SOAP in mind. But I will work on a better integration with libraries and the other problems you found.
Comment #17 list to organize my work:
sub issue 1sub issue 2sub issue 3sub issue 4Won't fix, see comment #19sub issue 5sub issue 6sub issue 7sub issue 8Removed the ':' because in this case there is any DLS name. This is a warning message.sub issue 9sub issue 10check_plain() inserted in _dlsconnect_clientdata()sub issue 11sub issue 12sub issue 13sub issue 14Very helpful hint: especially for extending the settings.Comment #19
c-logemannAbout my hook strategy
I have checked all my own hooks and currently I don't see any case where drupal_alter() is needed. The concept these hooks is to provide a possibility of special configuration in a custom module (see README.txt and drupalconnect.api.php).
If somebody has an idea of another contrib module based on this I can change my strategy.
The password generation hook is build on a special security idea or improving performance with lower security. But a modification is not needed at this time and I have removed this.
Complete change of settings strategy
Comment #20
c-logemannAnd finally a complete rewrite of each output with theme functions.
There is currently a Test System with LDAP and DLS Server connected. So if someone wants to check this module working I can provide access to this test system.
Comment #20.0
c-logemannThe module is used on production site
Comment #20.1
c-logemannAdded next review
Comment #20.2
c-logemannAdded next review link
Comment #21
c-logemannadded Tag PAReview: review bonus
Comment #22
klausiThanks for your reviews!
manual review:
But otherwise this looks RTBC to me. Assigning to tim.plunkett as he might have time to finally approve this. Removing review bonus tag, you can add it again if you have done another 3 reviews of other projects.
Comment #23
c-logemann@klausi: Thanks a lot for review and the RTBC status.
fixed 1,2,3 of #22 and
fixed a new error on joining/leaving a group that I produced by myself on my last changes.
Comment #24
patrickd commentedLooks good for me,
Thanks for your contribution, C_Logemann! Welcome to the community of project contributors on drupal.org!! :)
I've granted you the git vetted user role which will let you promote this to a full project and also create new projects as either sandbox or "full" projects depending on which you feel is best.
Thanks, also, for your patience with the review process. Anyone is welcome to participate in the review process. Please consider reviewing other projects that are pending review. I encourage you to learn more about that process and join the group of reviewers.
As you continue to work on your module, keep in mind: Commit messages - providing history and credit and Release naming conventions.
Thanks to the dedicated reviewer(s) as well.
Comment #25
c-logemannMany thanks to all reviewers especially for the patience.
Comment #26.0
(not verified) commentedAdded Review link
Comment #27
avpaderno