[squeak-dev] The Inbox: Network-cbc.234.mcz
Chris Cunningham
cunningham.cb at gmail.com
Tue Jun 11 14:18:51 UTC 2019
HI.
Could someone that has used ServerDirectory verifies it still works with
this change? The rest of the changes I've burned in for a couple of
months, but never having used ServerDirectory (and being confused by it,
too), I haven't verified that part. It *should* continue to work without
issues.
Thanks,
cbc
On Fri, Jun 7, 2019, 12:56 <commits at source.squeak.org> wrote:
> Chris Cunningham uploaded a new version of Network to project The Inbox:
> http://source.squeak.org/inbox/Network-cbc.234.mcz
>
> ==================== Summary ====================
>
> Name: Network-cbc.234
> Author: cbc
> Time: 7 June 2019, 12:56:17.741581 pm
> UUID: a2081791-f54f-40fd-bd59-b8da1d52265d
> Ancestors: Network-pre.233
>
> Password was very specific for ServerDirectory.
> Re-factor Password into a more generic password holder (usuable in other
> classes).
> Create ServerPassword as a sub-class of Password with necessary
> specilizations moved down to it.
> Make ServcieDirectory point to ServerPassword.
>
> This allows us to use Password generally to store a password in memory
> (encoded) during a Squeak session, which is cleared out when saving. The
> intended use case is to not store passwords in code or in the file system -
> instead prompt the user at first use and cache it for the rest of the life
> of the session.
>
> =============== Diff against Network-pre.233 ===============
>
> Item was changed:
> Object subclass: #Password
> + instanceVariableNames: 'cache'
> - instanceVariableNames: 'cache sequence'
> classVariableNames: ''
> poolDictionaries: ''
> category: 'Network-Kernel'!
>
> + !Password commentStamp: 'cbc 6/7/2019 11:19' prior: 0!
> + "Hold a password in memory during a run of the app.
> - !Password commentStamp: 'pre 12/11/2018 15:53' prior: 0!
> - "Hold a password. There are three ways to get the password.
>
> + After each save (after each startup), when an applicaiton asks for a
> password, one of two things will happen:
> + 1> the user will be prompted for the password
> + 2> If the user was previously prompted, return that password
> - If there is no password (sequence == nil), ask the user for it.
>
> + Passwords are stored encoded.
> + At shutDown, passwords are cleared (will not be written to disc).
> - If the user supplied one during this session, return that. It is
> cleared at shutDown.
>
> + The intent for this class is to avoid storing passwords in code or on
> files on the system. Instead, prompt the user during the running of the
> application."!
> - If sequence is a number, get the server passwords off the disk. File '
> sqk.info' must be in the same folder 'Squeak.sources' file. Decode the
> file. Return the password indexed by sequence."!
>
> Item was changed:
> ----- Method: Password>>cache: (in category 'accessing') -----
> cache: anObject
> + "if anObject is nil, then clear out cache - don't store values to
> disc"
> + anObject ifNil: [^cache := nil].
> + "Otherwise, 'encode' (trivially) the password while it resides in
> memory - no plain text"
> + cache := self decode: anObject!
> - cache := anObject!
>
> Item was removed:
> - ----- Method: Password>>passwordFor: (in category 'accessing') -----
> - passwordFor: serverDir
> - "Returned the password from one of many sources. OK if send in a
> nil arg."
> -
> - | sp msg |
> - cache ifNotNil: [^ cache].
> - sequence ifNotNil: [
> - (sp := self serverPasswords) ifNotNil: [
> - sequence <= sp size ifTrue: [^ sp at: sequence]]].
> - msg := serverDir isRemoteDirectory
> - ifTrue: [serverDir moniker]
> - ifFalse: ['this directory'].
> - (serverDir user = 'anonymous') & (serverDir typeWithDefault ==
> #ftp) ifTrue: [
> - ^ cache := UIManager default request: 'Please let
> this anonymous ftp\server know your email address.\This is the polite thing
> to do.' withCRs
> - initialAnswer: 'yourName at company.com'].
> -
> - ^ cache := UIManager default requestPassword: 'Password for ',
> serverDir user, ' at ', msg, ':'.
> - "Diff between empty string and abort?"!
>
> Item was added:
> + ----- Method: Password>>passwordForMessage: (in category 'accessing')
> -----
> + passwordForMessage: msg
> + cache ifNotNil: [^self decode: cache]. "Our stored value is
> encoded"
> + ^self decode: (cache := self decode: (UIManager default
> requestPassword: 'Password for ', msg, ':')).!
>
> Item was removed:
> - ----- Method: Password>>sequence (in category 'accessing') -----
> - sequence
> - ^sequence!
>
> Item was removed:
> - ----- Method: Password>>sequence: (in category 'accessing') -----
> - sequence: anNumber
> - sequence := anNumber!
>
> Item was removed:
> - ----- Method: Password>>serverPasswords (in category 'accessing') -----
> - serverPasswords
> - "Get the server passwords off the disk and decode them. The file '
> sqk.info' must be in some folder that Squeak thinks is special (vm
> folder, or default directory). (Note: This code works even if you are
> running with no system sources file.)"
> -
> - | sfile |
> - (sfile := FileDirectory lookInUsualPlaces: 'sqk.info') ifNil: [^
> nil].
> - "If not there, Caller will ask user for password"
> - "If you don't have this file, and you really do want to
> release an update,
> - contact Ted Kaehler."
> - ^ (self decode: (sfile contentsOfEntireFile)) lines
> - !
>
> Item was changed:
> ----- Method: ServerDirectory>>password (in category 'accessing') -----
> password
>
> + passwordHolder ifNil: [passwordHolder := ServerPassword new].
> - passwordHolder ifNil: [passwordHolder := Password new].
> ^ passwordHolder passwordFor: self "may ask the user"!
>
> Item was changed:
> ----- Method: ServerDirectory>>password: (in category 'accessing') -----
> password: pp
>
> + passwordHolder := ServerPassword new.
> - passwordHolder := Password new.
> pp isString
> ifTrue: [passwordHolder cache: pp. ^ self].
> pp isInteger
> ifTrue: [passwordHolder sequence: pp]
> ifFalse: [passwordHolder := pp].!
>
> Item was changed:
> ----- Method: ServerDirectory>>passwordSequence: (in category
> 'accessing') -----
> passwordSequence: aNumber
>
> + passwordHolder ifNil: [passwordHolder := ServerPassword new].
> - passwordHolder ifNil: [passwordHolder := Password new].
> passwordHolder sequence: aNumber!
>
> Item was added:
> + Password subclass: #ServerPassword
> + instanceVariableNames: 'sequence'
> + classVariableNames: ''
> + poolDictionaries: ''
> + category: 'Network-Kernel'!
> +
> + !ServerPassword commentStamp: 'cbc 6/7/2019 11:15' prior: 0!
> + "Hold a password. There are three ways to get the password.
> +
> + If there is no password (sequence == nil), ask the user for it.
> +
> + If the user supplied one during this session, return that. It is
> cleared at shutDown.
> +
> + If sequence is a number, get the server passwords off the disk. File '
> sqk.info' must be in the same folder 'Squeak.sources' file. Decode the
> file. Return the password indexed by sequence."!
>
> Item was added:
> + ----- Method: ServerPassword>>cache: (in category 'accessing') -----
> + cache: anObject
> + cache := anObject!
>
> Item was added:
> + ----- Method: ServerPassword>>passwordFor: (in category 'accessing')
> -----
> + passwordFor: serverDir
> + "Returned the password from one of many sources. OK if send in a
> nil arg."
> +
> + | sp msg |
> + cache ifNotNil: [^ cache].
> + sequence ifNotNil: [
> + (sp := self serverPasswords) ifNotNil: [
> + sequence <= sp size ifTrue: [^ sp at: sequence]]].
> + msg := serverDir isRemoteDirectory
> + ifTrue: [serverDir moniker]
> + ifFalse: ['this directory'].
> + (serverDir user = 'anonymous') & (serverDir typeWithDefault ==
> #ftp) ifTrue: [
> + ^ cache := UIManager default request: 'Please let
> this anonymous ftp\server know your email address.\This is the polite thing
> to do.' withCRs
> + initialAnswer: 'yourName at company.com'].
> +
> + ^ cache := UIManager default requestPassword: 'Password for ',
> serverDir user, ' at ', msg, ':'.
> + "Diff between empty string and abort?"!
>
> Item was added:
> + ----- Method: ServerPassword>>sequence (in category 'accessing') -----
> + sequence
> + ^sequence!
>
> Item was added:
> + ----- Method: ServerPassword>>sequence: (in category 'accessing') -----
> + sequence: anNumber
> + sequence := anNumber!
>
> Item was added:
> + ----- Method: ServerPassword>>serverPasswords (in category 'accessing')
> -----
> + serverPasswords
> + "Get the server passwords off the disk and decode them. The file '
> sqk.info' must be in some folder that Squeak thinks is special (vm
> folder, or default directory). (Note: This code works even if you are
> running with no system sources file.)"
> +
> + | sfile |
> + (sfile := FileDirectory lookInUsualPlaces: 'sqk.info') ifNil: [^
> nil].
> + "If not there, Caller will ask user for password"
> + "If you don't have this file, and you really do want to
> release an update,
> + contact Ted Kaehler."
> + ^ (self decode: (sfile contentsOfEntireFile)) lines
> + !
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20190611/d801ce26/attachment.html>
More information about the Squeak-dev
mailing list
|