Compare commits
1
Commits
openid
..
test_pr359
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d8ac610057 |
No files matched your search
@@ -34,7 +34,7 @@ ActiveSync_RESOURCE_FILES += \
|
||||
ADDITIONAL_OBJCFLAGS += -Wno-deprecated-declarations
|
||||
ADDITIONAL_INCLUDE_DIRS += -I../SOPE/ -I../SoObjects/
|
||||
ADDITIONAL_LIB_DIRS += -L../SOPE/GDLContentStore/obj/ -L../SOPE/NGCards/obj/
|
||||
ADDITIONAL_INCLUDE_DIRS += $(shell pkg-config --cflags libwbxml2)
|
||||
ADDITIONAL_INCLUDE_DIRS += -I/usr/include/libwbxml-1.0/
|
||||
ADDITIONAL_LDFLAGS += -Wl,--no-as-needed -lwbxml2
|
||||
|
||||
-include GNUmakefile.preamble
|
||||
|
||||
@@ -2,51 +2,6 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||
|
||||
### [5.11.2](https://github.com/Alinto/sogo/compare/SOGo-5.11.1...SOGo-5.11.2) (2024-10-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **mail:** modify the message-id to not start by XX- that trigger a native spamassassin rule ([1d8ee80](https://github.com/Alinto/sogo/commit/1d8ee80c394382d26e50457cda9f9292b0f4f63b))
|
||||
* **security:** fix a security issue introduced in 5.11.1 with parameter SOGoForbidUnknownDomainsAuth ([04a9a87](https://github.com/Alinto/sogo/commit/04a9a8773dfb30dcc86c6146eed175a9a115f6b2))
|
||||
|
||||
## [5.11.1](https://github.com/Alinto/sogo/compare/SOGo-5.11.0...SOGo-5.11.1) (2024-10-08)
|
||||
|
||||
|
||||
### Enhancements
|
||||
|
||||
* **login:** add parameters to prevent uneccesary connection request when the domain is unknown ([56598d1](https://github.com/Alinto/sogo/commit/56598d1e3777265ebb09fa19e7a719f673aaee40))
|
||||
* **sieve:** add from on notificatons ([1c20c1e](https://github.com/Alinto/sogo/commit/1c20c1ead3094ca109a5334fdf33726a0e638365))
|
||||
* **build:** Use pkgconfig to compute cflags for wbxml2 instead of hardcoding them. Thanks to [jmallach](https://github.com/jmallach)
|
||||
|
||||
### Regression Fixes
|
||||
* **calendar:** Fix regression on repeat task ([2a17449](https://github.com/Alinto/sogo/commit/2a1744998c0023f3cbaddd6ee90275ee1baf6cc3))
|
||||
* **mail:** Add an option in Preferences to display full email instead of name alone in mailboxes. Fix issue caused by advanced search. ([fa2caf9](https://github.com/Alinto/sogo/commit/fa2caf902666367e247850ce9da82737b5ec6bbb))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **calendar:** Fix all day recurring event displayed on 2 days when a DST change occurs at the endDate ([2f75a7f](https://github.com/Alinto/sogo/commit/2f75a7fb1b57cbb4d98ec1596fe5b3d98cdd0934))
|
||||
* **ckeditor5:** prevent ckeditor5 to preview media ([2dd1097](https://github.com/Alinto/sogo/commit/2dd10970a4e0cbe8f2e8a9c0241d139d4ce006fa))
|
||||
* **mail:** Fix assertion when there is an empty image in the mail. Fixes [#6035](https://bugs.sogo.nu/view.php?id=6035). ([59d48cb](https://github.com/Alinto/sogo/commit/59d48cb38285ab019013972baa3e5269b6188a5e))
|
||||
* **mail:** Fix highlighsearch html rendering on subject ([0cbd082](https://github.com/Alinto/sogo/commit/0cbd082c1d48c70d87e58a8bb8ae05183676e2a1))
|
||||
* **mail:** Fix HTML mail rendering issue ([41a0f8d](https://github.com/Alinto/sogo/commit/41a0f8d9afc3a9d29f26c4109620252a82002ae4))
|
||||
* **mail:** Fix issue where mailto: links are badly formatted when html composing ([86446a0](https://github.com/Alinto/sogo/commit/86446a059ce70adf103c27768040e52087000812))
|
||||
* **mail:** Fix issue where unread counter is invalid when whanging folder. Fixes [#6001](https://bugs.sogo.nu/view.php?id=6001). ([1f6bbc1](https://github.com/Alinto/sogo/commit/1f6bbc1044e8c4f715b96b1b95bfb0eef888e7a3) [91a2490](https://github.com/Alinto/sogo/commit/91a249009b4a700b0a2b335450b32a73985b8dd1))
|
||||
* **mail:** improve algo to fetch imap folders for mail view ([68f4fc1](https://github.com/Alinto/sogo/commit/68f4fc134312bc28031e2be0167c117f67c6f0b8))
|
||||
* **security:** Prevent user to add html script in its preferences ([a7023bc](https://github.com/Alinto/sogo/commit/a7023bce1642ec1fd25fe68f0541407d78f321a0))
|
||||
* **sogo-tool:** prevent a bug when restoring two events with same id ([84fe91c](https://github.com/Alinto/sogo/commit/84fe91c29c24440980df4311d0ae0835337f1ec4))
|
||||
* **tests:** Add timeout on all async tests ([64f1788](https://github.com/Alinto/sogo/commit/64f17880c739e9feef8ce69ed221d83586b773a1))
|
||||
|
||||
|
||||
### Localization
|
||||
|
||||
* **de:** Update German translations ([592f35b](https://github.com/Alinto/sogo/commit/592f35bbec2823e72f1790c8b629c485f3e5500d))
|
||||
* **pt_BR:** Update BrazilianPortuguese translations ([1d3b502](https://github.com/Alinto/sogo/commit/1d3b502bc78f50c9038027036036c6d37d7fe340))
|
||||
* **pt:** Update Portuguese translations ([a4de357](https://github.com/Alinto/sogo/commit/a4de35748babced2f385046d97055fec8d80e667))
|
||||
* **ru:** Update Russian translations ([78ea981](https://github.com/Alinto/sogo/commit/78ea981e7f4254a8353e276c309fe54443bdd090))
|
||||
* **tr_TR:** Update TurkishTurkey translations ([41aecca](https://github.com/Alinto/sogo/commit/41aecca692f93134c6dd0d535ed7479182f7fd23))
|
||||
* **uk:** Update Ukrainian translations ([80a7689](https://github.com/Alinto/sogo/commit/80a76895dd59402e884d0226f59bd8edd7e8a9c1))
|
||||
|
||||
## [5.11.0](https://github.com/Alinto/sogo/compare/SOGo-5.10.0...SOGo-5.11.0) (2024-08-07)
|
||||
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ Assumptions
|
||||
SOGo reuses many components in an infrastructure. Thus, it requires the
|
||||
following:
|
||||
|
||||
* Database server (MariaDB, MySQL, PostgreSQL or Oracle)
|
||||
* Database server (MySQL, PostgreSQL or Oracle)
|
||||
* LDAP server (OpenLDAP, Novell eDirectory, Microsoft Active Directory
|
||||
and others)
|
||||
* SMTP server (Postfix, Sendmail and others)
|
||||
@@ -265,8 +265,8 @@ This will install SOGo and its dependencies such as GNUstep, the SOPE
|
||||
packages and memcached. Once the base packages are installed, you need
|
||||
to install the proper database connector suitable for your environment.
|
||||
You need to install `sope49-gdl1-postgresql` for the PostgreSQL database
|
||||
system, `sope49-gdl1-mysql` for MariaDB/MySQL or `sope49-gdl1-oracle`
|
||||
for Oracle. The installation command will thus look like this:
|
||||
system, `sope49-gdl1-mysql` for MySQL or `sope49-gdl1-oracle` for Oracle.
|
||||
The installation command will thus look like this:
|
||||
|
||||
yum install sope49-gdl1-postgresql
|
||||
|
||||
@@ -437,8 +437,8 @@ Defaults to `300`.
|
||||
|
||||
|S |SOGoAuthenticationType
|
||||
|Parameter used to define the way by which users will be authenticated.
|
||||
For C.A.S., specify `cas`. For SAML2, specify `saml2`. For opendID Connect, specify `openid`.
|
||||
For anything else, leave that value empty.
|
||||
For C.A.S., specify `cas`. For SAML2, specify `saml2`. For anything
|
||||
else, leave that value empty.
|
||||
|
||||
|S |SOGoTrustProxyAuthentication
|
||||
|Parameter used to set whether HTTP username should be trusted.
|
||||
@@ -477,19 +477,6 @@ example.
|
||||
|
||||
Defaults to `YES` when unset.
|
||||
|
||||
|S |SOGoCalendarEnableJitsiLink
|
||||
|Parameter allowing users to create Jitsi link when creating an event.
|
||||
Be aware that a least one of the attendees will need an account from a
|
||||
platform that Jitsi supports: Google, Facebook or Github
|
||||
|
||||
Defaults to `NO` when unset.
|
||||
|
||||
|D |SOGoCalendarJitsiBaseUrl
|
||||
|Only used if SOGoCalendarEnableJitsiLink is set to YES. String for the URL of
|
||||
the jitsi server used for creating the meeting link.
|
||||
|
||||
Defaults to `https://meet.jit.si` when unset.
|
||||
|
||||
|S |SOGoSAML2PrivateKeyLocation
|
||||
|The location of the SSL private key file on the filesystem that is used
|
||||
by SOGo to sign and encrypt communications with the SAML2 identity
|
||||
@@ -819,18 +806,6 @@ Default value is `YES`, or enabled.
|
||||
authentication and global address books. Multiple sources can be
|
||||
specified as an array of dictionaries.
|
||||
|
||||
|S |SOGoForbidUnknownDomainsAuth
|
||||
|Boolean. If set to `YES`, prevent user that try to connect with an unknown domain.
|
||||
The known domains are set in parameter `SOGoDomainAllowed` and/or the domains listed in a <<multi-domains-configuration, Multi-domains Configuration>>. Default value is `NO`.
|
||||
|
||||
Obiously, if your users can connect without specifying a domain, let this parameter to `NO`.
|
||||
|
||||
|S |SOGoDomainAllowed
|
||||
|Parameter used to define which domains SOGo should allowed during a connection request. This parameter is an array of strings.
|
||||
|
||||
|S |SOGoURLCreateAccount
|
||||
|Add a link below the login form and set the link using the value of this setting.
|
||||
|
||||
|S |SOGoPasswordRecoveryEnabled
|
||||
|Boolean enable password recovery with secret question or secondary e-mail. Default value is `NO`.
|
||||
|
||||
@@ -1559,81 +1534,6 @@ SOGoIMAPCASServiceName should be set to the actual imap service name
|
||||
expected by pam_cas, otherwise it will fail to authenticate incoming
|
||||
connection properly.
|
||||
|
||||
|
||||
Authenticating using OPENID
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
SOGo natively supports OPENID authentication. For activating OpenId authentication you need first to make sure that
|
||||
_SOGoAuthenticationType_ is set to `openid`,
|
||||
_SOGoXSRFValidationEnabled_ is set to `NO` and set the following parameters:
|
||||
|
||||
[cols="^4,46,50a"]
|
||||
|=======================================================================
|
||||
|S |OCSOpenIdURL
|
||||
|Parameter used to set the database URL for openID session.
|
||||
|
||||
For MariaDB/MySQL, set the database URL to something like: mysql://sogo:sogo@127.0.0.1:3306/sogo/sogo_openid.
|
||||
|
||||
|
||||
|S |SOGoOpenIdConfigUrl
|
||||
|Parameter used to specify the endpoint of OpenID Provider Configuration, mandatory. For example:
|
||||
https://myopenid.net/.well-known/openid-configuration
|
||||
|
||||
|S |SOGoOpenIdClient
|
||||
|Name of your openid client, mandatory.
|
||||
|
||||
|S |SOGoOpenIdClientSecret
|
||||
|Secret of your openid client, mandatory
|
||||
|
||||
|S |SOGoOpenIdScope
|
||||
|Scope or your openid client, mandatory. List of words space separated like this:
|
||||
"openid profile email"
|
||||
|
||||
|S |SOGoOpenIdEmailParam
|
||||
|Name of the parameter from user profile that contains the mail/uid.
|
||||
|
||||
Defaults to `email` when unset.
|
||||
|
||||
|S |SOGoOpenIdEnableRefreshToken
|
||||
|Set to `YES` to Enable the mechanism of refresh token if provided. You may have to configure
|
||||
and/or add a value to your scope for it to work.
|
||||
|
||||
Defaults to `NO` when unset.
|
||||
|
||||
|S |SOGoOpenIdTokenCheckInterval
|
||||
|Number of seconds before sogo check again the user's access token validity.
|
||||
This is to prevent sogo to do too much request to the openid server.
|
||||
|
||||
Defaults to `0` when unset.
|
||||
|
||||
|S |SOGoOpenIdLogoutEnabled
|
||||
|Allow user to end their openId with the webmail. Meaning that will disconnect them from
|
||||
the others applicaitons as well.
|
||||
|
||||
Defaults to `NO` when unset.
|
||||
|=======================================================================
|
||||
|
||||
|
||||
The tricky part shows up for the imap and smtp sever. SOGo doesn't know the password
|
||||
of the user and only have its access token. A new auth mechanism has been implemented,
|
||||
the https://developers.google.com/gmail/imap/xoauth2-protocol#initial_client_response[xoauth2]
|
||||
|
||||
You can set it with the parameter _NGImap4AuthMechanism_ and/or _SOGoSMTPAuthenticationType_
|
||||
|
||||
*With dovecot:* +
|
||||
Dovecot natively supports xoauth2 and can be figured as such: https://doc.dovecot.org/2.3/configuration_manual/authentication/oauth2/
|
||||
|
||||
*With cyrus:* +
|
||||
Cyrus doesn't support xoauth2 mechanism and pluggins or homemade solutions must be found. +
|
||||
_Please note, as Alinto uses dovecot, we didn't investigate cyrus' case. If one member of the community
|
||||
finds a solution, we will be happy to update this documentation._
|
||||
|
||||
As you can see, a new database table is used for handling openid session. The table is automaticcaly created when _OCSOpenIdURL_ is set.
|
||||
If the user quits the webmail without logging out or trough another application,
|
||||
the session will stays in the table and be useless. That's why a new sogo-tool command has been added to clean this table.
|
||||
You can put it in a cron to do that periodicly. +
|
||||
See _<<sogo-tool-clean-openid-sessions,sogo-tool clean-openid-sessions>>_.
|
||||
|
||||
Authenticating using SAML2
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -1676,7 +1576,7 @@ appointments, tasks and contacts information. It also uses the database
|
||||
system to store personal preferences of SOGo users. In this guide, we
|
||||
assume you use PostgreSQL so commands provided the create the database
|
||||
are related to this application. However, other database servers are
|
||||
supported, such as MariaDB, MySQL and Oracle.
|
||||
supported, such as MySQL and Oracle.
|
||||
|
||||
First, make sure that your PostgreSQL server has TCP/IP connections
|
||||
support enabled.
|
||||
@@ -1741,7 +1641,7 @@ The following table describes the parameters that were set:
|
||||
|Parameter used to set the database URL so that SOGo can retrieve user
|
||||
profiles.
|
||||
|
||||
For MariaDB/MySQL, set the database URL to something like:
|
||||
For MySQL, set the database URL to something like:
|
||||
`mysql://sogo:sogo@127.0.0.1:3306/sogo/sogo_user_profile`.
|
||||
|
||||
|S |OCSFolderInfoURL
|
||||
@@ -1766,9 +1666,6 @@ URL could be set to something like:
|
||||
|
||||
See the "EMail reminders" section in this document for more information.
|
||||
|
||||
|S |SOGoEnableMailCleaning
|
||||
|Parameter used to enable cleaning folders and mailbox (remove mail older than X days). Default value is `NO`.
|
||||
|
||||
|S |SOGoDisableOrganizerEventCheck
|
||||
|Parameter used to disable organizer's calendar event check
|
||||
|
||||
@@ -1818,8 +1715,7 @@ In addition to the seven tables described above, two other tables get
|
||||
created in the database: `sogo_quick_appointment` and `sogo_quick_contact`
|
||||
which store calendar and contact information.
|
||||
|
||||
If you're using MariaDB/MySQL, make sure in your `my.cnf` file you
|
||||
have:
|
||||
If you're using MySQL, make sure in your `my.cnf` file you have:
|
||||
|
||||
----
|
||||
[mysqld]
|
||||
@@ -1834,11 +1730,10 @@ default-character-set=utf8
|
||||
default-character-set=utf8
|
||||
----
|
||||
|
||||
MariaDB/MySQL SSL Connection
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
MySQL SSL Connection
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Add the following settings in the `sogo.conf` file to enable SSL connection
|
||||
between SOGo and MariaDB/MySQL :
|
||||
Add the following settings in the `sogo.conf` file to enable SSL connection between SOGo and MySQL / MariaDB :
|
||||
|
||||
----
|
||||
MySQL4SSLEnabled = YES;
|
||||
@@ -1848,13 +1743,12 @@ MySQL4SSLCaPath = "/mysql_keys/ca-cert.pem";
|
||||
----
|
||||
|
||||
|
||||
MariaDB/MySQL complete Unicode compliance
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
MySQL complete Unicode compliance
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
By default MariaDB/MySQL only supports a subset of UTF-8, meaning that
|
||||
characters such as emoji are not handled properly. Some extra steps at
|
||||
installation can be undertaken to leverage full Unicode support under
|
||||
MariaDB/MySQL.
|
||||
By default MySQL only supports a subset of UTF-8, meaning that characters such
|
||||
as emoji are not handled properly. Some extra steps at installation can be
|
||||
undertaken to leverage full Unicode support under MySQL.
|
||||
|
||||
IMPORTANT: Switching to complete Unicode compliance on an already-deployed SOGo
|
||||
is out of scope of this document, as it would typically involve delicate manual
|
||||
@@ -1862,11 +1756,10 @@ operations on the database system.
|
||||
|
||||
Requirements:
|
||||
|
||||
* MariaDB >= 5.5
|
||||
* MySQL >= 5.5
|
||||
* SOGo >= 3.1.0
|
||||
|
||||
Strongly suggested MariaDB/MySQL configuration settings (innodb* parameters are
|
||||
Strongly suggested MySQL configuration settings (innodb* parameters are
|
||||
mandatory *only* for versions lower than 8.0):
|
||||
|
||||
----
|
||||
@@ -1886,8 +1779,8 @@ innodb_large_prefix = TRUE # MySQL < 8.0 only
|
||||
----
|
||||
|
||||
CAUTION: Changing InnoDB parameters on an already deployed database server can
|
||||
cause severe data loss. Do not blindly edit MariaDB/MySQL parameters without
|
||||
reading and understanding the implication of such changes.
|
||||
cause severe data loss. Do not blindly edit MySQL parameters without reading
|
||||
and understanding the implication of such changes.
|
||||
|
||||
A parameter must be added to `sogo.conf` to turn on complete Unicode
|
||||
compliance:
|
||||
@@ -1907,8 +1800,8 @@ a command such as:
|
||||
mysql -hHOST -uUSER -p -D SOGO < Scripts/mysql-utf8mb4.sql
|
||||
----
|
||||
|
||||
Where `HOST`, `USER` and `SOGO` are your MariaDB/MySQL host, username and
|
||||
database name respectively.
|
||||
Where `HOST`, `USER` and `SOGO` are your MySQL host, username and database name
|
||||
respectively.
|
||||
|
||||
Once SOGo is running, you can test correctness by creating an event such as
|
||||
“Lunch with 🍕 and fries” and seeing it properly displayed in the SOGo
|
||||
@@ -1956,12 +1849,11 @@ they have the same name as popular LDAP attributes (such as `givenName`,
|
||||
|
||||
|userPasswordPolicy
|
||||
|
||||
|An array of dictionaries that define regular expressions used to determine
|
||||
whether a new password is valid.
|
||||
|An array of dictionaries that define regular expressions used to determine whether a new password
|
||||
is valid.
|
||||
|
||||
Each dictionary must contain the key "regex" associated to a string
|
||||
representing a regular expression. It can also contain the key "label" to
|
||||
briefly describe the constraint to the user. Example:
|
||||
Each dictionary must contain the key "regex" associated to a string representing a regular
|
||||
expression. It can also contain the key "label" to briefly describe the constraint to the user. Example:
|
||||
|
||||
----
|
||||
userPasswordPolicy = (
|
||||
@@ -2188,7 +2080,8 @@ To disable TLS verification for localhost domains, add
|
||||
|
||||
|D |SOGoSMTPAuthenticationType
|
||||
|Activate SMTP authentication and specifies which type is in use.
|
||||
Current, Are supported `PLAIN` and 'xoauth2' for openid.
|
||||
Current, only `PLAIN` is supported and other values will cause
|
||||
the authentication to fail.
|
||||
|
||||
|D |SOGoSMTPMasterUserEnabled
|
||||
|Enable specific SMTP user account for system e-mails (notifications, reminders, ...). Default is `NO`.
|
||||
@@ -2371,7 +2264,6 @@ SASL mechanism. Using `AUTHENTICATE` instead of `LOGIN` is also necessary
|
||||
to enable UTF-8 characters in users' passwords. To enable simple use of
|
||||
`AUTHENTICATE` for this purpose, set this setting to `plain`. Please note
|
||||
that this feature might be limited at this time.
|
||||
Now support `xoauth2` mechanism when using openid. Be sure you imap server undesrtands this mechanism.
|
||||
|
||||
|D |NGImap4ConnectionGroupIdPrefix
|
||||
|Prefix to prepend to names in IMAP ACL transactions, to indicate the
|
||||
@@ -2518,16 +2410,6 @@ appended to the user's vacation message. For example:
|
||||
|
||||
See `SOGoVacationHeaderTemplateFile` for available template variables.
|
||||
|
||||
|D |SOGoVacationAllowZeroDays
|
||||
|Parameter used to enable an option of 0 for the vacation days setting.
|
||||
A value of 0 means that auto response mails are sent for every incoming mail.
|
||||
|
||||
This option has to be supported by the IMAP host
|
||||
(see https://doc.dovecot.org/2.3/settings/pigeonhole-ext/vacation/#pigeonhole_setting-sieve_vacation_min_period
|
||||
for instructions regarding Dovecot/Pigeonhole).
|
||||
|
||||
Defaults to `NO` when unset.
|
||||
|
||||
|D |SOGoForwardEnabled
|
||||
|Parameter used to activate the edition from the preferences window of a
|
||||
forwarding email address. Requires Sieve script support on the IMAP
|
||||
@@ -2942,8 +2824,6 @@ like this:
|
||||
}
|
||||
----
|
||||
|
||||
[[multi-domains-configuration]]
|
||||
|
||||
Multi-domains Configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -3337,9 +3217,9 @@ instructions. On the SOGo side, _SOGoEnablePublicAccess_ must be set to
|
||||
need to adjust the word size of your IMAP server. In Dovecot, the parameter
|
||||
to increase is "imap_max_line_length" while under Cyrus IMAP Server, the
|
||||
parameter is "maxword". We suggest a buffer of 2MB.
|
||||
* If you are using MariaDB/MySQL, make sure you set "max_allowed_packet" to a
|
||||
large value since the EAS cache size can be large for mailboxes with thousands
|
||||
of messages. A 64M or even 128M value is recommended.
|
||||
* If you are using MySQL, make sure you set "max_allowed_packet" to a large value
|
||||
since the EAS cache size can be large for mailboxes with thousands of messages.
|
||||
A 64M or even 128M value is recommended.
|
||||
|
||||
In order to use the SOGo ActiveSync support code in production
|
||||
environments, you need to get a proper usage license from Microsoft.
|
||||
@@ -3705,22 +3585,6 @@ sogo-tool checkup user1
|
||||
sogo-tool checkup -d user1
|
||||
----
|
||||
|
||||
|
||||
[[sogo-tool-clean-openid-sessions]]
|
||||
|
||||
sogo-tool clean-openid-sessions
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Obviously only usefull if you have set SOGo with openId authentication.
|
||||
Will clean all expired openId sessions from the database.
|
||||
|
||||
sogo-tool clean-openid-sessions
|
||||
|
||||
Example:
|
||||
----
|
||||
sogo-tool clean-openid-sessions
|
||||
----
|
||||
|
||||
sogo-tool cleanup
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -4068,7 +3932,7 @@ _Defaults_ stores all parameters that can be found in Preferences panel. So it g
|
||||
autoreply to many others options.
|
||||
|
||||
|
||||
user-preferences get|set|unset defaults|settings user key [value|-f filename] [-p credentialFile [-F]]
|
||||
user-preferences get|set|unset defaults|settings user key [value|-f filename] [-p credentialFile]
|
||||
|
||||
* First argument is the action *get*, *set* or *unset*
|
||||
* Second argument is parameter type *settings* or *defaults*
|
||||
@@ -4076,8 +3940,7 @@ autoreply to many others options.
|
||||
* Fourth argument *key* is the name of the parameters where to make the action
|
||||
* If the action is *set*, you should provide either *value* as fifth argument or a file with the value inside with *-f* filename/path
|
||||
* If the action is *set* or *unset* and the *key* concerns a sieve script (filter, vacation, forward...), you
|
||||
should provide a credential file, a one-line file that contains "username:password" of an admin account of your imap/sieve server. If you
|
||||
want t oforce the sieve script activation add -F after.
|
||||
should provide a credential file, a one-line file that contains "username:password" of an admin account of your imap/sieve server.
|
||||
|
||||
As there is a lot of parameters, this documentation will not go into details for each one. To know what are
|
||||
the key names and their value you should got to your database in table defined by _SOGoProfileURL_ in your sogo.conf.
|
||||
@@ -4106,7 +3969,7 @@ sogo-tool user-preferences unset defaults user1 Forward -p /etc/sogo/cred
|
||||
|
||||
*set* action:
|
||||
----
|
||||
sogo-tool user-preferences set defaults user1 Forward '{"forwardAddress":["sogo-tests2@sogo.alinto"],"enabled":1,"keepCopy":0}' -p cred -F
|
||||
sogo-tool user-preferences set defaults user1 Forward '{"forwardAddress":["sogo-tests2@sogo.alinto"],"enabled":1,"keepCopy":0}' -p cred
|
||||
----
|
||||
or create a json file which contains _{"forwardAddress":["sogo-tests2@sogo.alinto"],"enabled":1,"keepCopy":0}_ then:
|
||||
----
|
||||
|
||||
+13
-21
@@ -288,16 +288,16 @@ static BOOL debugLeaks;
|
||||
|
||||
e = [urlStrings objectEnumerator];
|
||||
while (ok && (tmp = [e nextObject]))
|
||||
{
|
||||
value = [defaults stringForKey: tmp];
|
||||
if (value)
|
||||
[self _checkTableWithCM: cm tableURL: value andType: tmp];
|
||||
else
|
||||
{
|
||||
[self errorWithFormat: @"No value specified for '%@'", tmp];
|
||||
ok = NO;
|
||||
value = [defaults stringForKey: tmp];
|
||||
if (value)
|
||||
[self _checkTableWithCM: cm tableURL: value andType: tmp];
|
||||
else
|
||||
{
|
||||
[self errorWithFormat: @"No value specified for '%@'", tmp];
|
||||
ok = NO;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (combined)
|
||||
{
|
||||
@@ -322,15 +322,9 @@ static BOOL debugLeaks;
|
||||
|
||||
// Create the email alarms table, if required
|
||||
if ([defaults enableEMailAlarms])
|
||||
{
|
||||
[[fm alarmsFolder] createFolderIfNotExists];
|
||||
}
|
||||
|
||||
//Create mandatory openId table, if used
|
||||
if([defaults hasOpenIdType])
|
||||
{
|
||||
[[fm openIdFolder] createFolderIfNotExists];
|
||||
}
|
||||
{
|
||||
[[fm alarmsFolder] createFolderIfNotExists];
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
@@ -380,10 +374,8 @@ static BOOL debugLeaks;
|
||||
|
||||
request = [_ctx request];
|
||||
login = [SOGoUser getDecryptedUsernameIfNeeded: _key request: request];
|
||||
if([login isEqualToString: @"changeLanguage"])
|
||||
user = nil;
|
||||
else
|
||||
user = [SOGoUser userWithLogin: login roles: nil];
|
||||
|
||||
user = [SOGoUser userWithLogin: login roles: nil];
|
||||
if (user)
|
||||
userFolder = [$(@"SOGoUserFolder") objectWithName: login
|
||||
inContainer: self];
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
*/
|
||||
|
||||
@class NSString, NSArray, NSURL, NSDictionary, NSException;
|
||||
@class GCSChannelManager, GCSAlarmsFolder, GCSAdminFolder, GCSFolder, GCSFolderType, GCSSessionsFolder, GCSOpenIdFolder;
|
||||
@class GCSChannelManager, GCSAlarmsFolder, GCSAdminFolder, GCSFolder, GCSFolderType, GCSSessionsFolder;
|
||||
|
||||
@interface GCSFolderManager : NSObject
|
||||
{
|
||||
@@ -92,9 +92,6 @@
|
||||
/* admin */
|
||||
- (GCSAdminFolder *)adminFolder;
|
||||
|
||||
/* openid */
|
||||
- (GCSOpenIdFolder *) openIdFolder;
|
||||
|
||||
/* folder types */
|
||||
|
||||
- (GCSFolderType *)folderTypeWithName:(NSString *)_name;
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
#import "EOAdaptorChannel+GCS.h"
|
||||
#import "GCSAlarmsFolder.h"
|
||||
#import "GCSAdminFolder.h"
|
||||
#import "GCSOpenIdFolder.h"
|
||||
#import "GCSFolder.h"
|
||||
#import "GCSFolderType.h"
|
||||
#import "GCSSessionsFolder.h"
|
||||
@@ -505,12 +504,6 @@ static BOOL _singleStoreMode = NO;
|
||||
return [GCSAdminFolder adminFolderWithFolderManager: self];
|
||||
}
|
||||
|
||||
/* openId */
|
||||
- (GCSOpenIdFolder *) openIdFolder
|
||||
{
|
||||
return [GCSOpenIdFolder openIdFolderWithFolderManager: self];
|
||||
}
|
||||
|
||||
- (NSString *)generateSQLWhereForInternalNames:(NSArray *)_names
|
||||
exactMatch:(BOOL)_beExact orDirectSubfolderMatch:(BOOL)_directSubs
|
||||
{
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
/* GCSAdminFolder.h - this file is part of $PROJECT_NAME_HERE$
|
||||
*
|
||||
* Copyright (C) 2023 Alinto
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This file 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef GCSOPENIDFOLDER_H
|
||||
#define GCSOPENIDOLDER_H
|
||||
|
||||
|
||||
@class NSCalendarDate;
|
||||
@class NSException;
|
||||
@class NSNumber;
|
||||
@class NSString;
|
||||
|
||||
@class GCSFolderManager;
|
||||
|
||||
@interface GCSOpenIdFolder : NSObject
|
||||
{
|
||||
GCSFolderManager *folderManager;
|
||||
}
|
||||
|
||||
+ (id)openIdFolderWithFolderManager:(GCSFolderManager *)newFolderManager;
|
||||
|
||||
- (void) setFolderManager: (GCSFolderManager *) newFolderManager;
|
||||
|
||||
/* operations */
|
||||
|
||||
- (void) createFolderIfNotExists;
|
||||
- (BOOL) canConnectStore;
|
||||
|
||||
- (NSString *) getRefreshToken: (NSString *) _user_session useOldSession: (BOOL) use_old_session;
|
||||
- (NSString *) getNewToken: (NSString *) _old_session;
|
||||
- (NSException *) writeOpenIdSession: (NSString *) _user_session
|
||||
withOldSession: (NSString *) _old_session
|
||||
withRefreshToken: (NSString *) _refresh_token
|
||||
withExpire: (NSNumber *) _expire
|
||||
withRefreshExpire: (NSNumber *) _refresh_expire;
|
||||
- (NSException *) deleteOpenIdSessionFor: (NSString *) _user_session;
|
||||
|
||||
@end
|
||||
|
||||
#endif /* GCSALARMSFOLDER_H */
|
||||
@@ -1,363 +0,0 @@
|
||||
/* GCSAdminFolder.m - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2023 Alinto
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This file 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
|
||||
#import <NGExtensions/NSObject+Logs.h>
|
||||
#import <NGExtensions/NSNull+misc.h>
|
||||
|
||||
#import <GDLAccess/EOAdaptorContext.h>
|
||||
#import <GDLAccess/EOAttribute.h>
|
||||
#import <GDLAccess/EOEntity.h>
|
||||
#import <GDLAccess/EOSQLQualifier.h>
|
||||
|
||||
#import "EOQualifier+GCS.h"
|
||||
#import "GCSChannelManager.h"
|
||||
#import "GCSFolderManager.h"
|
||||
#import "GCSSpecialQueries.h"
|
||||
#import "NSURL+GCS.h"
|
||||
|
||||
#import "GCSOpenIdFolder.h"
|
||||
|
||||
static NSString *openIdFolderURLString = nil;
|
||||
|
||||
#warning GCSOpenIdFolder should share a common ancestor with GCSFolder
|
||||
|
||||
@implementation GCSOpenIdFolder
|
||||
|
||||
+ (void) initialize
|
||||
{
|
||||
NSUserDefaults *ud;
|
||||
|
||||
if (!openIdFolderURLString)
|
||||
{
|
||||
ud = [NSUserDefaults standardUserDefaults];
|
||||
ASSIGN (openIdFolderURLString, [ud stringForKey: @"OCSOpenIdURL"]);
|
||||
}
|
||||
}
|
||||
|
||||
+ (id) openIdFolderWithFolderManager: (GCSFolderManager *) newFolderManager
|
||||
{
|
||||
GCSOpenIdFolder *newFolder;
|
||||
|
||||
if (openIdFolderURLString)
|
||||
{
|
||||
newFolder = [self new];
|
||||
[newFolder autorelease];
|
||||
[newFolder setFolderManager: newFolderManager];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self errorWithFormat: @"'OCSOpenIdURL' is not set"];
|
||||
newFolder = nil;
|
||||
}
|
||||
|
||||
return newFolder;
|
||||
}
|
||||
|
||||
- (void) setFolderManager: (GCSFolderManager *) newFolderManager
|
||||
{
|
||||
ASSIGN (folderManager, newFolderManager);
|
||||
}
|
||||
|
||||
/* accessors */
|
||||
|
||||
- (NSURL *) _location
|
||||
{
|
||||
NSURL *location;
|
||||
|
||||
if (openIdFolderURLString)
|
||||
location = [NSURL URLWithString: openIdFolderURLString];
|
||||
else
|
||||
{
|
||||
[self warnWithFormat: @"'OCSOpenIdURL' is not set"];
|
||||
location = nil;
|
||||
}
|
||||
|
||||
return location;
|
||||
}
|
||||
|
||||
- (GCSChannelManager *) _channelManager
|
||||
{
|
||||
return [folderManager channelManager];
|
||||
}
|
||||
|
||||
- (NSString *) _storeTableName
|
||||
{
|
||||
return [[self _location] gcsTableName];
|
||||
}
|
||||
|
||||
- (EOEntity *) _storeTableEntityForChannel: (EOAdaptorChannel *) tc
|
||||
{
|
||||
static EOEntity *entity = nil;
|
||||
EOAttribute *attribute;
|
||||
NSString *tableName;
|
||||
NSString *columns[] = {@"c_user_session", @"c_old_session", @"c_session_started", @"c_refresh_token", @"c_access_token_expires_in", @"c_refresh_token_expires_in", nil };
|
||||
NSString **column;
|
||||
NSMutableArray *keys;
|
||||
NSDictionary *types;
|
||||
|
||||
if (!entity)
|
||||
{
|
||||
entity = [EOEntity new];
|
||||
tableName = [self _storeTableName];
|
||||
[entity setName: tableName];
|
||||
[entity setExternalName: tableName];
|
||||
|
||||
types = [[tc specialQueries] openIdAttributeTypes];
|
||||
|
||||
column = columns;
|
||||
while (*column)
|
||||
{
|
||||
attribute = [EOAttribute new];
|
||||
[attribute setName: *column];
|
||||
[attribute setColumnName: *column];
|
||||
[attribute setExternalType: [types objectForKey: *column]];
|
||||
[entity addAttribute: attribute];
|
||||
[attribute release];
|
||||
column++;
|
||||
}
|
||||
|
||||
keys = [NSMutableArray arrayWithCapacity: 1];
|
||||
[keys addObject: [entity attributeNamed: @"c_user_session"]];
|
||||
[entity setPrimaryKeyAttributes: keys];
|
||||
|
||||
keys = [NSMutableArray arrayWithCapacity: 5];
|
||||
[keys addObject: [entity attributeNamed: @"c_old_session"]];
|
||||
[keys addObject: [entity attributeNamed: @"c_session_started"]];
|
||||
[keys addObject: [entity attributeNamed: @"c_refresh_token"]];
|
||||
[keys addObject: [entity attributeNamed: @"c_access_token_expires_in"]];
|
||||
[keys addObject: [entity attributeNamed: @"c_refresh_token_expires_in"]];
|
||||
[entity setClassProperties: keys];
|
||||
[entity setAttributesUsedForLocking: [NSArray array]];
|
||||
}
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
/* connection */
|
||||
|
||||
- (EOAdaptorChannel *) _acquireStoreChannel
|
||||
{
|
||||
return [[self _channelManager] acquireOpenChannelForURL: [self _location]];
|
||||
}
|
||||
|
||||
- (void) _releaseChannel: (EOAdaptorChannel *) _channel
|
||||
{
|
||||
[[self _channelManager] releaseChannel:_channel immediately: YES];
|
||||
}
|
||||
|
||||
- (BOOL) canConnectStore
|
||||
{
|
||||
return [[self _channelManager] canConnect:[self _location]];
|
||||
}
|
||||
|
||||
- (void) createFolderIfNotExists
|
||||
{
|
||||
EOAdaptorChannel *tc;
|
||||
NSString *sql, *tableName;
|
||||
GCSSpecialQueries *queries;
|
||||
|
||||
tc = [self _acquireStoreChannel];
|
||||
tableName = [self _storeTableName];
|
||||
|
||||
queries = [tc specialQueries];
|
||||
|
||||
sql = [NSString stringWithFormat: @"SELECT 1 FROM %@ WHERE 1 = 2", tableName];
|
||||
if ([tc evaluateExpressionX: sql])
|
||||
{
|
||||
sql = [queries createOpenIdFolderWithName: tableName];
|
||||
if (![tc evaluateExpressionX: sql])
|
||||
[self logWithFormat: @"openid folder table '%@' successfully created!", tableName];
|
||||
}
|
||||
else
|
||||
[tc cancelFetch];
|
||||
|
||||
[self _releaseChannel: tc];
|
||||
}
|
||||
|
||||
/* operations */
|
||||
|
||||
/* table has the following fields:
|
||||
c_user_session varchar(255) NOT NULL,
|
||||
c_session_started int(11) NOT NULL,
|
||||
c_refresh_token varchar(4096) DEFAULT '',
|
||||
c_access_token_expires_in int(11) NOT NULL,
|
||||
c_refresh_token_expires_in int(11) DEFAULT NULL,
|
||||
*/
|
||||
|
||||
- (NSDictionary *) recordForSession: (NSString *) _user_session useOldSession: (BOOL) use_old_session
|
||||
{
|
||||
EOAdaptorChannel *tc;
|
||||
EOAdaptorContext *context;
|
||||
NSException *error;
|
||||
NSArray *attrs;
|
||||
NSDictionary *record;
|
||||
EOEntity *entity;
|
||||
EOSQLQualifier *qualifier;
|
||||
|
||||
record = nil;
|
||||
|
||||
tc = [self _acquireStoreChannel];
|
||||
if (tc)
|
||||
{
|
||||
context = [tc adaptorContext];
|
||||
entity = [self _storeTableEntityForChannel: tc];
|
||||
if(!use_old_session)
|
||||
qualifier = [[EOSQLQualifier alloc] initWithEntity: entity
|
||||
qualifierFormat: @"c_user_session='%@'", _user_session];
|
||||
else
|
||||
qualifier = [[EOSQLQualifier alloc] initWithEntity: entity
|
||||
qualifierFormat: @"c_old_session='%@'", _user_session];
|
||||
[qualifier autorelease];
|
||||
|
||||
[context beginTransaction];
|
||||
error = [tc selectAttributesX: [entity attributesUsedForFetch]
|
||||
describedByQualifier: qualifier
|
||||
fetchOrder: nil
|
||||
lock: NO];
|
||||
if (error)
|
||||
[self errorWithFormat:@"%s: cannot execute fetch: %@", __PRETTY_FUNCTION__, error];
|
||||
else
|
||||
{
|
||||
attrs = [tc describeResults: NO];
|
||||
record = [tc fetchAttributes: attrs withZone: NULL];
|
||||
[tc cancelFetch];
|
||||
}
|
||||
[context rollbackTransaction];
|
||||
[self _releaseChannel: tc];
|
||||
}
|
||||
|
||||
return record;
|
||||
}
|
||||
|
||||
- (NSString *) getRefreshToken: (NSString *) _user_session
|
||||
{
|
||||
NSDictionary *r;
|
||||
|
||||
r = [self recordForSession: _user_session useOldSession: NO];
|
||||
if (r && [r objectForKey:@"c_refresh_token"])
|
||||
return [r objectForKey:@"c_refresh_token"];
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSString *) getNewToken: (NSString *) _old_session
|
||||
{
|
||||
NSDictionary *r;
|
||||
r = [self recordForSession: _old_session useOldSession: YES];
|
||||
if (r && [r objectForKey:@"c_user_session"])
|
||||
return [r objectForKey:@"c_user_session"];
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
||||
- (NSException *) writeOpenIdSession: (NSString *) _user_session
|
||||
withOldSession: (NSString *) _old_session
|
||||
withRefreshToken: (NSString *) _refresh_token
|
||||
withExpire: (NSNumber *) _expire
|
||||
withRefreshExpire: (NSNumber *) _refresh_expire
|
||||
{
|
||||
NSDictionary *record, *newRecord;
|
||||
NSException *error;
|
||||
NSCalendarDate *nowDate;
|
||||
int now, nowExpire, nowRefreshExpire;
|
||||
EOAdaptorChannel *tc;
|
||||
EOAdaptorContext *context;
|
||||
EOEntity *entity;
|
||||
EOSQLQualifier *qualifier;
|
||||
|
||||
error = nil;
|
||||
tc = [self _acquireStoreChannel];
|
||||
if (tc)
|
||||
{
|
||||
context = [tc adaptorContext];
|
||||
|
||||
nowDate = [NSCalendarDate date];
|
||||
now = (nowDate ? (int)[nowDate timeIntervalSince1970] : 0);
|
||||
nowExpire = now + [_expire intValue];
|
||||
if(_refresh_expire)
|
||||
nowRefreshExpire = now + [_refresh_expire intValue];
|
||||
else
|
||||
nowRefreshExpire = -1;
|
||||
if(!_old_session)
|
||||
_old_session = @"";
|
||||
|
||||
newRecord = [NSDictionary dictionaryWithObjectsAndKeys: _user_session, @"c_user_session",
|
||||
_old_session, @"c_old_session",
|
||||
[NSNumber numberWithInt:now], @"c_session_started",
|
||||
_refresh_token, @"c_refresh_token",
|
||||
[NSNumber numberWithInt:nowExpire] , @"c_access_token_expires_in",
|
||||
[NSNumber numberWithInt:nowRefreshExpire] , @"c_refresh_token_expires_in",
|
||||
nil];
|
||||
record = [self recordForSession: _user_session useOldSession: NO];
|
||||
entity = [self _storeTableEntityForChannel: tc];
|
||||
[context beginTransaction];
|
||||
if (!record)
|
||||
{
|
||||
//If the session already exist no need to update it as it is unique
|
||||
error = [tc insertRowX: newRecord forEntity: entity];
|
||||
}
|
||||
|
||||
if (error)
|
||||
{
|
||||
[context rollbackTransaction];
|
||||
[self errorWithFormat:@"%s: cannot write record: %@", __PRETTY_FUNCTION__, error];
|
||||
}
|
||||
else
|
||||
[context commitTransaction];
|
||||
[self _releaseChannel: tc];
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
- (NSException *) deleteOpenIdSessionFor: (NSString *) _user_session
|
||||
{
|
||||
EOAdaptorChannel *tc;
|
||||
EOAdaptorContext *context;
|
||||
EOEntity *entity;
|
||||
EOSQLQualifier *qualifier;
|
||||
NSException *error;
|
||||
|
||||
error = nil;
|
||||
tc = [self _acquireStoreChannel];
|
||||
if (tc)
|
||||
{
|
||||
context = [tc adaptorContext];
|
||||
entity = [self _storeTableEntityForChannel: tc];
|
||||
qualifier = [[EOSQLQualifier alloc] initWithEntity: entity
|
||||
qualifierFormat: @"c_user_session='%@'",_user_session];
|
||||
[qualifier autorelease];
|
||||
[context beginTransaction];
|
||||
error = [tc deleteRowsDescribedByQualifierX: qualifier];
|
||||
if (error)
|
||||
{
|
||||
[context rollbackTransaction];
|
||||
[self errorWithFormat:@"%s: cannot delete record: %@", __PRETTY_FUNCTION__, error];
|
||||
}
|
||||
else
|
||||
[context commitTransaction];
|
||||
[self _releaseChannel: tc];
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -42,9 +42,6 @@
|
||||
- (NSString *)createAdminFolderWithName:(NSString *)tableName;
|
||||
- (NSDictionary *)adminAttributeTypes;
|
||||
|
||||
- (NSString *)createOpenIdFolderWithName:(NSString *)tableName;
|
||||
- (NSDictionary *)openIdAttributeTypes;
|
||||
|
||||
- (NSString *) updateCPathInFolderInfo:(NSString *)tableName
|
||||
withCPath2:(NSString *)c_path2;
|
||||
|
||||
|
||||
@@ -95,21 +95,6 @@
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSString *) createOpenIdFolderWithName: (NSString *) tableName
|
||||
{
|
||||
[self subclassResponsibility: _cmd];
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSDictionary *) openIdAttributeTypes
|
||||
{
|
||||
[self subclassResponsibility: _cmd];
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
||||
- (NSString *) createFolderTableWithName: (NSString *) tableName
|
||||
{
|
||||
[self subclassResponsibility: _cmd];
|
||||
@@ -210,38 +195,6 @@
|
||||
return types;
|
||||
}
|
||||
|
||||
- (NSString *) createOpenIdFolderWithName: (NSString *) tableName
|
||||
{
|
||||
static NSString *sqlFolderFormat
|
||||
= (@"CREATE TABLE %@ ("
|
||||
@" c_user_session VARCHAR(4096) NOT NULL,"
|
||||
@" c_old_session VARCHAR(4096) NULL,"
|
||||
@" c_session_started INT4 NOT NULL,"
|
||||
@" c_refresh_token VARCHAR(4096) NULL,"
|
||||
@" c_access_token_expires_in INT4 NOT NULL,"
|
||||
@" c_refresh_token_expires_in INT4 NULL)");
|
||||
|
||||
return [NSString stringWithFormat: sqlFolderFormat, tableName];
|
||||
}
|
||||
|
||||
- (NSDictionary *) openIdAttributeTypes
|
||||
{
|
||||
static NSMutableDictionary *types = nil;
|
||||
|
||||
if (!types)
|
||||
{
|
||||
types = [NSMutableDictionary new];
|
||||
[types setObject: @"varchar" forKey: @"c_user_session"];
|
||||
[types setObject: @"varchar" forKey: @"c_old_session"];
|
||||
[types setObject: @"int" forKey: @"c_session_started"];
|
||||
[types setObject: @"varchar" forKey: @"c_refresh_token"];
|
||||
[types setObject: @"int" forKey: @"c_access_token_expires_in"];
|
||||
[types setObject: @"int" forKey: @"c_refresh_token_expires_in"];
|
||||
}
|
||||
|
||||
return types;
|
||||
}
|
||||
|
||||
- (NSString *) createFolderTableWithName: (NSString *) tableName
|
||||
{
|
||||
static NSString *sqlFolderFormat
|
||||
@@ -371,38 +324,6 @@
|
||||
return types;
|
||||
}
|
||||
|
||||
- (NSString *) createOpenIdFolderWithName: (NSString *) tableName
|
||||
{
|
||||
static NSString *sqlFolderFormat
|
||||
= (@"CREATE TABLE %@ ("
|
||||
@" c_user_session VARCHAR(4096) NOT NULL,"
|
||||
@" c_old_session VARCHAR(4096) NULL,"
|
||||
@" c_session_started INT4 NOT NULL,"
|
||||
@" c_refresh_token VARCHAR(4096) NULL,"
|
||||
@" c_access_token_expires_in INT4 NOT NULL,"
|
||||
@" c_refresh_token_expires_in INT4 NULL)");
|
||||
|
||||
return [NSString stringWithFormat: sqlFolderFormat, tableName];
|
||||
}
|
||||
|
||||
- (NSDictionary *) openIdAttributeTypes
|
||||
{
|
||||
static NSMutableDictionary *types = nil;
|
||||
|
||||
if (!types)
|
||||
{
|
||||
types = [NSMutableDictionary new];
|
||||
[types setObject: @"varchar" forKey: @"c_user_session"];
|
||||
[types setObject: @"varchar" forKey: @"c_old_session"];
|
||||
[types setObject: @"int" forKey: @"c_session_started"];
|
||||
[types setObject: @"varchar" forKey: @"c_refresh_token"];
|
||||
[types setObject: @"int" forKey: @"c_access_token_expires_in"];
|
||||
[types setObject: @"int" forKey: @"c_refresh_token_expires_in"];
|
||||
}
|
||||
|
||||
return types;
|
||||
}
|
||||
|
||||
- (NSString *) createFolderTableWithName: (NSString *) tableName
|
||||
{
|
||||
static NSString *sqlFolderFormat
|
||||
@@ -532,38 +453,6 @@
|
||||
return types;
|
||||
}
|
||||
|
||||
- (NSString *) createOpenIdFolderWithName: (NSString *) tableName
|
||||
{
|
||||
static NSString *sqlFolderFormat
|
||||
= (@"CREATE TABLE %@ ("
|
||||
@" c_user_session VARCHAR2(4096) NOT NULL,"
|
||||
@" c_old_session VARCHAR2(4096) NULL,"
|
||||
@" c_session_started INTEGER NOT NULL,"
|
||||
@" c_refresh_token VARCHAR2(4096) NULL,"
|
||||
@" c_access_token_expires_in INTEGER NOT NULL,"
|
||||
@" c_refresh_token_expires_in INTEGER NULL)");
|
||||
|
||||
return [NSString stringWithFormat: sqlFolderFormat, tableName];
|
||||
}
|
||||
|
||||
- (NSDictionary *) openIdAttributeTypes
|
||||
{
|
||||
static NSMutableDictionary *types = nil;
|
||||
|
||||
if (!types)
|
||||
{
|
||||
types = [NSMutableDictionary new];
|
||||
[types setObject: @"varchar2" forKey: @"c_user_session"];
|
||||
[types setObject: @"varchar2" forKey: @"c_old_session"];
|
||||
[types setObject: @"integer" forKey: @"c_session_started"];
|
||||
[types setObject: @"varchar2" forKey: @"c_refresh_token"];
|
||||
[types setObject: @"integer" forKey: @"c_access_token_expires_in"];
|
||||
[types setObject: @"integer" forKey: @"c_refresh_token_expires_in"];
|
||||
}
|
||||
|
||||
return types;
|
||||
}
|
||||
|
||||
- (NSString *) createFolderTableWithName: (NSString *) tableName
|
||||
{
|
||||
static NSString *sqlFolderFormat
|
||||
|
||||
@@ -28,14 +28,13 @@ libGDLContentStore_HEADER_FILES += \
|
||||
GCSAdminFolder.h \
|
||||
GCSContext.h \
|
||||
GCSFieldInfo.h \
|
||||
GCSFolder.h \
|
||||
GCSFolder.h \
|
||||
GCSFolderManager.h \
|
||||
GCSFolderType.h \
|
||||
GCSChannelManager.h \
|
||||
GCSOpenIdFolder.h \
|
||||
GCSSessionsFolder.h \
|
||||
GCSSpecialQueries.h \
|
||||
GCSStringFormatter.h \
|
||||
GCSStringFormatter.h \
|
||||
|
||||
libGDLContentStore_OBJC_FILES += \
|
||||
NSURL+GCS.m \
|
||||
@@ -46,14 +45,13 @@ libGDLContentStore_OBJC_FILES += \
|
||||
GCSAdminFolder.m \
|
||||
GCSContext.m \
|
||||
GCSFieldInfo.m \
|
||||
GCSFolder.m \
|
||||
GCSFolder.m \
|
||||
GCSFolderManager.m \
|
||||
GCSFolderType.m \
|
||||
GCSChannelManager.m \
|
||||
GCSOpenIdFolder.m \
|
||||
GCSSessionsFolder.m \
|
||||
GCSSpecialQueries.m \
|
||||
GCSStringFormatter.m \
|
||||
GCSStringFormatter.m \
|
||||
|
||||
# framework support
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Abidjan
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Abidjan
|
||||
BEGIN:STANDARD
|
||||
TZNAME:GMT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Algiers
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Algiers
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CET
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Bissau
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Bissau
|
||||
BEGIN:STANDARD
|
||||
TZNAME:GMT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Cairo
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Cairo
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:EEST
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Casablanca
|
||||
TZUNTIL:20870511T020001Z
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Casablanca
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:+01
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0100
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Ceuta
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Ceuta
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:CEST
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/El_Aaiun
|
||||
TZUNTIL:20870511T020001Z
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/El_Aaiun
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:+01
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0100
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Johannesburg
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Johannesburg
|
||||
BEGIN:STANDARD
|
||||
TZNAME:SAST
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Juba
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Juba
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CAT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Khartoum
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Khartoum
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CAT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Lagos
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Lagos
|
||||
BEGIN:STANDARD
|
||||
TZNAME:WAT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Maputo
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Maputo
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CAT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Monrovia
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Monrovia
|
||||
BEGIN:STANDARD
|
||||
TZNAME:GMT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Nairobi
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Nairobi
|
||||
BEGIN:STANDARD
|
||||
TZNAME:EAT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Ndjamena
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Ndjamena
|
||||
BEGIN:STANDARD
|
||||
TZNAME:WAT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Sao_Tome
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Sao_Tome
|
||||
BEGIN:STANDARD
|
||||
TZNAME:GMT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Tripoli
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Tripoli
|
||||
BEGIN:STANDARD
|
||||
TZNAME:EET
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Tunis
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Tunis
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CET
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Africa/Windhoek
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:Africa/Windhoek
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CAT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Adak
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Adak
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:HDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Anchorage
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Anchorage
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:AKDT
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Araguaina
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Araguaina
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Argentina/Buenos_Aires
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Argentina/Buenos_Aires
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Argentina/Catamarca
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Argentina/Catamarca
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Argentina/Cordoba
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Argentina/Cordoba
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Argentina/Jujuy
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Argentina/Jujuy
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Argentina/La_Rioja
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Argentina/La_Rioja
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Argentina/Mendoza
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Argentina/Mendoza
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Argentina/Rio_Gallegos
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Argentina/Rio_Gallegos
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Argentina/Salta
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Argentina/Salta
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Argentina/San_Juan
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Argentina/San_Juan
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Argentina/San_Luis
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Argentina/San_Luis
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Argentina/Tucuman
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Argentina/Tucuman
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Argentina/Ushuaia
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Argentina/Ushuaia
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Asuncion
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Asuncion
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0400
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19701004T000000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-04
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0400
|
||||
DTSTART:19700322T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Bahia
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Bahia
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Bahia_Banderas
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Bahia_Banderas
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CST
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Barbados
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Barbados
|
||||
BEGIN:STANDARD
|
||||
TZNAME:AST
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Belem
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Belem
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Belize
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Belize
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CST
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Boa_Vista
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Boa_Vista
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-04
|
||||
TZOFFSETFROM:-0400
|
||||
TZOFFSETTO:-0400
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Bogota
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Bogota
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-05
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0500
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Boise
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Boise
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:MDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Cambridge_Bay
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Cambridge_Bay
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:MDT
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Campo_Grande
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Campo_Grande
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-04
|
||||
TZOFFSETFROM:-0400
|
||||
TZOFFSETTO:-0400
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Cancun
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Cancun
|
||||
BEGIN:STANDARD
|
||||
TZNAME:EST
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Caracas
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Caracas
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-04
|
||||
TZOFFSETFROM:-0400
|
||||
TZOFFSETTO:-0400
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Cayenne
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Cayenne
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Chicago
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Chicago
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:CDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Chihuahua
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Chihuahua
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CST
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Ciudad_Juarez
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Ciudad_Juarez
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:MDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Costa_Rica
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Costa_Rica
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CST
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Cuiaba
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Cuiaba
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-04
|
||||
TZOFFSETFROM:-0400
|
||||
TZOFFSETTO:-0400
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Danmarkshavn
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Danmarkshavn
|
||||
BEGIN:STANDARD
|
||||
TZNAME:GMT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Dawson
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Dawson
|
||||
BEGIN:STANDARD
|
||||
TZNAME:MST
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Dawson_Creek
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Dawson_Creek
|
||||
BEGIN:STANDARD
|
||||
TZNAME:MST
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Denver
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Denver
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:MDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Detroit
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Detroit
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:EDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Edmonton
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Edmonton
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:MDT
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Eirunepe
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Eirunepe
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-05
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0500
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/El_Salvador
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/El_Salvador
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CST
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Fort_Nelson
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Fort_Nelson
|
||||
BEGIN:STANDARD
|
||||
TZNAME:MST
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Fortaleza
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Fortaleza
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-03
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0300
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Glace_Bay
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Glace_Bay
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:ADT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Goose_Bay
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Goose_Bay
|
||||
BEGIN:STANDARD
|
||||
TZNAME:AST
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Grand_Turk
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Grand_Turk
|
||||
BEGIN:STANDARD
|
||||
TZNAME:EST
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Guatemala
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Guatemala
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CST
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Guayaquil
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Guayaquil
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-05
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0500
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Guyana
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Guyana
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-04
|
||||
TZOFFSETFROM:-0400
|
||||
TZOFFSETTO:-0400
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Halifax
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Halifax
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:ADT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Havana
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Havana
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CST
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Hermosillo
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Hermosillo
|
||||
BEGIN:STANDARD
|
||||
TZNAME:MST
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Indiana/Indianapolis
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Indiana/Indianapolis
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:EDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Indiana/Knox
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Indiana/Knox
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:CDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Indiana/Marengo
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Indiana/Marengo
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:EDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Indiana/Petersburg
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Indiana/Petersburg
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:EDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Indiana/Tell_City
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Indiana/Tell_City
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:CDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Indiana/Vevay
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Indiana/Vevay
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:EDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Indiana/Vincennes
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Indiana/Vincennes
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:EDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Indiana/Winamac
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Indiana/Winamac
|
||||
BEGIN:STANDARD
|
||||
TZNAME:EST
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Inuvik
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Inuvik
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:MDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Iqaluit
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Iqaluit
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:EDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Jamaica
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Jamaica
|
||||
BEGIN:STANDARD
|
||||
TZNAME:EST
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Juneau
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Juneau
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:AKDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Kentucky/Louisville
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Kentucky/Louisville
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:EDT
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Kentucky/Monticello
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Kentucky/Monticello
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:EDT
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/La_Paz
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/La_Paz
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-04
|
||||
TZOFFSETFROM:-0400
|
||||
TZOFFSETTO:-0400
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Lima
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Lima
|
||||
BEGIN:STANDARD
|
||||
TZNAME:%z
|
||||
TZNAME:-05
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0500
|
||||
DTSTART:19700101T000000
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Alinto//NONSGML IANA 2024b//EN
|
||||
PRODID:-//Alinto//NONSGML IANA 2024c//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Los_Angeles
|
||||
LAST-MODIFIED:20241008T100856Z
|
||||
LAST-MODIFIED:20240220T101645Z
|
||||
X-LIC-LOCATION:America/Los_Angeles
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:PDT
|
||||
|
||||
Loaded 100 of 593 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user