mirror of
https://github.com/unidoc/unioffice.git
synced 2025-04-27 13:48:54 +08:00
131 lines
42 KiB
Go
131 lines
42 KiB
Go
//
|
|
// Copyright 2020 FoxyUtils ehf. All rights reserved.
|
|
//
|
|
// This is a commercial product and requires a license to operate.
|
|
// A trial license can be obtained at https://unidoc.io
|
|
//
|
|
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
|
|
//
|
|
// Use of this source code is governed by the UniDoc End User License Agreement
|
|
// terms that can be accessed at https://unidoc.io/eula/
|
|
|
|
package license ;import (_fa "bytes";_a "compress/gzip";_b "crypto";_ag "crypto/aes";_dd "crypto/cipher";_edc "crypto/hmac";_fe "crypto/rand";_fg "crypto/rsa";_bd "crypto/sha256";_gfb "crypto/sha512";_gf "crypto/x509";_gg "encoding/base64";_ab "encoding/binary";
|
|
_cf "encoding/hex";_bef "encoding/json";_aa "encoding/pem";_cg "errors";_gb "fmt";_fc "github.com/unidoc/unioffice/common";_ge "github.com/unidoc/unioffice/common/logger";_ed "io";_ef "io/ioutil";_g "log";_ac "net";_c "net/http";_f "os";_d "path/filepath";
|
|
_be "regexp";_bea "sort";_fac "strings";_ad "sync";_eg "time";);func (_fef *LicenseKey )ToString ()string {if _fef ._dge {return "M\u0065t\u0065\u0072\u0065\u0064\u0020\u0073\u0075\u0062s\u0063\u0072\u0069\u0070ti\u006f\u006e";};_dff :=_gb .Sprintf ("\u004ci\u0063e\u006e\u0073\u0065\u0020\u0049\u0064\u003a\u0020\u0025\u0073\u000a",_fef .LicenseId );
|
|
_dff +=_gb .Sprintf ("\u0043\u0075s\u0074\u006f\u006de\u0072\u0020\u0049\u0064\u003a\u0020\u0025\u0073\u000a",_fef .CustomerId );_dff +=_gb .Sprintf ("\u0043u\u0073t\u006f\u006d\u0065\u0072\u0020N\u0061\u006de\u003a\u0020\u0025\u0073\u000a",_fef .CustomerName );
|
|
_dff +=_gb .Sprintf ("\u0054i\u0065\u0072\u003a\u0020\u0025\u0073\n",_fef .Tier );_dff +=_gb .Sprintf ("\u0043r\u0065a\u0074\u0065\u0064\u0020\u0041\u0074\u003a\u0020\u0025\u0073\u000a",_fc .UtcTimeFormat (_fef .CreatedAt ));if _fef .ExpiresAt .IsZero (){_dff +="\u0045x\u0070i\u0072\u0065\u0073\u0020\u0041t\u003a\u0020N\u0065\u0076\u0065\u0072\u000a";
|
|
}else {_dff +=_gb .Sprintf ("\u0045x\u0070i\u0072\u0065\u0073\u0020\u0041\u0074\u003a\u0020\u0025\u0073\u000a",_fc .UtcTimeFormat (_fef .ExpiresAt ));};_dff +=_gb .Sprintf ("\u0043\u0072\u0065\u0061\u0074\u006f\u0072\u003a\u0020\u0025\u0073\u0020<\u0025\u0073\u003e\u000a",_fef .CreatorName ,_fef .CreatorEmail );
|
|
return _dff ;};type meteredClient struct{_dbb string ;_dgbd string ;_ege *_c .Client ;};const _cace ="\u000a\u002d\u002d\u002d\u002d\u002d\u0042\u0045\u0047\u0049\u004e \u0050\u0055\u0042\u004c\u0049\u0043\u0020\u004b\u0045Y\u002d\u002d\u002d\u002d\u002d\u000a\u004d\u0049I\u0042\u0049\u006a\u0041NB\u0067\u006b\u0071\u0068\u006b\u0069G\u0039\u0077\u0030\u0042\u0041\u0051\u0045\u0046A\u0041\u004f\u0043\u0041\u0051\u0038\u0041\u004d\u0049\u0049\u0042\u0043\u0067\u004b\u0043\u0041\u0051\u0045A\u006dF\u0055\u0069\u0079\u0064\u0037\u0062\u0035\u0058\u006a\u0070\u006b\u0050\u0035\u0052\u0061\u0070\u0034\u0077\u000a\u0044\u0063\u0031d\u0079\u007a\u0049\u0051\u0034\u004c\u0065\u006b\u0078\u0072\u0076\u0079\u0074\u006e\u0045\u004d\u0070\u004e\u0055\u0062\u006f\u0036i\u0041\u0037\u0034\u0056\u0038\u0072\u0075\u005a\u004f\u0076\u0072\u0053\u0063\u0073\u0066\u0032\u0051\u0065\u004e9\u002f\u0071r\u0055\u0047\u0038\u0071\u0045\u0062\u0055\u0057\u0064\u006f\u0045\u0059\u0071+\u000a\u006f\u0074\u0046\u004e\u0041\u0046N\u0078\u006c\u0047\u0062\u0078\u0062\u0044\u0048\u0063\u0064\u0047\u0056\u0061\u004d\u0030\u004f\u0058\u0064\u0058g\u0044y\u004c5\u0061\u0049\u0045\u0061\u0067\u004c\u0030\u0063\u0035\u0070\u0077\u006a\u0049\u0064\u0050G\u0049\u006e\u0034\u0036\u0066\u0037\u0038\u0065\u004d\u004a\u002b\u004a\u006b\u0064\u0063\u0070\u0044\n\u0044\u004a\u0061\u0071\u0059\u0058d\u0072\u007a5\u004b\u0065\u0073\u0068\u006aS\u0069\u0049\u0061\u0061\u0037\u006d\u0065\u006e\u0042\u0049\u0041\u0058\u0053\u0034\u0055\u0046\u0078N\u0066H\u0068\u004e\u0030\u0048\u0043\u0059\u005a\u0059\u0071\u0051\u0047\u0037\u0062K+\u0073\u0035\u0072R\u0048\u006f\u006e\u0079\u0064\u004eW\u0045\u0047\u000a\u0048\u0038M\u0079\u0076\u00722\u0070\u0079\u0061\u0032K\u0072\u004d\u0075m\u0066\u006d\u0041\u0078\u0055\u0042\u0036\u0066\u0065\u006e\u0043\u002f4\u004f\u0030\u0057\u00728\u0067\u0066\u0050\u004f\u0055\u0038R\u0069\u0074\u006d\u0062\u0044\u0076\u0051\u0050\u0049\u0052\u0058\u004fL\u0034\u0076\u0054B\u0072\u0042\u0064\u0062a\u0041\u000a9\u006e\u0077\u004e\u0050\u002b\u0069\u002f\u002f\u0032\u0030\u004d\u00542\u0062\u0078\u006d\u0065\u0057\u0042\u002b\u0067\u0070\u0063\u0045\u0068G\u0070\u0058\u005a7\u0033\u0033\u0061\u007a\u0051\u0078\u0072\u0043\u0033\u004a\u0034\u0076\u0033C\u005a\u006d\u0045\u004eS\u0074\u0044\u004b\u002f\u004b\u0044\u0053\u0050\u004b\u0055\u0047\u0066\u00756\u000a\u0066\u0077I\u0044\u0041\u0051\u0041\u0042\u000a\u002d\u002d\u002d\u002d\u002dE\u004e\u0044\u0020\u0050\u0055\u0042\u004c\u0049\u0043 \u004b\u0045Y\u002d\u002d\u002d\u002d\u002d\n";
|
|
const _bcb ="\u0033\u0030\u0035\u0063\u0033\u0030\u0030\u00640\u0036\u0030\u0039\u0032\u0061\u0038\u00364\u0038\u0038\u0036\u0066\u0037\u0030d\u0030\u0031\u0030\u0031\u0030\u00310\u0035\u0030\u0030\u0030\u0033\u0034\u0062\u0030\u0030\u0033\u0030\u00348\u0030\u0032\u0034\u0031\u0030\u0030\u0062\u0038\u0037\u0065\u0061\u0066\u0062\u0036\u0063\u0030\u0037\u0034\u0039\u0039\u0065\u0062\u00397\u0063\u0063\u0039\u0064\u0033\u0035\u0036\u0035\u0065\u0063\u00663\u0031\u0036\u0038\u0031\u0039\u0036\u0033\u0030\u0031\u0039\u0030\u0037c\u0038\u0034\u0031\u0061\u0064\u0064c6\u0036\u0035\u0030\u0038\u0036\u0062\u0062\u0033\u0065\u0064\u0038\u0065\u0062\u0031\u0032\u0064\u0039\u0064\u0061\u0032\u0036\u0063\u0061\u0066\u0061\u0039\u0036\u00345\u0030\u00314\u0036\u0064\u0061\u0038\u0062\u0064\u0030\u0063c\u0066\u0031\u0035\u0035\u0066\u0063a\u0063\u0063\u00368\u0036\u0039\u0035\u0035\u0065\u0066\u0030\u0033\u0030\u0032\u0066\u0061\u0034\u0034\u0061\u0061\u0033\u0065\u0063\u0038\u0039\u0034\u0031\u0037\u0062\u0030\u0032\u0030\u0033\u0030\u0031\u0030\u0030\u0030\u0031";
|
|
type meteredStatusResp struct{Valid bool `json:"valid"`;OrgCredits int64 `json:"org_credits"`;OrgUsed int64 `json:"org_used"`;OrgRemaining int64 `json:"org_remaining"`;};type MeteredStatus struct{OK bool ;Credits int64 ;Used int64 ;};func _cef ()(_ac .IP ,error ){_efb ,_dfac :=_ac .Dial ("\u0075\u0064\u0070","\u0038\u002e\u0038\u002e\u0038\u002e\u0038\u003a\u0038\u0030");
|
|
if _dfac !=nil {return nil ,_dfac ;};defer _efb .Close ();_abaa :=_efb .LocalAddr ().(*_ac .UDPAddr );return _abaa .IP ,nil ;};const _dbfd ="\u0055N\u0049D\u004f\u0043\u005f\u004c\u0049C\u0045\u004eS\u0045\u005f\u0044\u0049\u0052";var _fcf []interface{};
|
|
type defaultStateHolder struct{};func (_ecf *LicenseKey )IsLicensed ()bool {if _ecf ==nil {return false ;};return _ecf .Tier !=LicenseTierUnlicensed ||_ecf ._dge ;};var _ce =_eg .Date (2019,6,6,0,0,0,0,_eg .UTC );func (_bca defaultStateHolder )loadState (_cee string )(reportState ,error ){_gfbg ,_fed :=_efbeg ();
|
|
if _fed !=nil {return reportState {},_fed ;};_fed =_f .MkdirAll (_gfbg ,0777);if _fed !=nil {return reportState {},_fed ;};if len (_cee )< 20{return reportState {},_cg .New ("i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006b\u0065\u0079");};_dffa :=[]byte (_cee );
|
|
_ceag :=_gfb .Sum512_256 (_dffa [:20]);_gbd :=_cf .EncodeToString (_ceag [:]);_gfcg :=_d .Join (_gfbg ,_gbd );_dec ,_fed :=_ef .ReadFile (_gfcg );if _fed !=nil {if _f .IsNotExist (_fed ){return reportState {},nil ;};_ge .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_fed );
|
|
return reportState {},_cg .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0061\u0074\u0061");};const _daa ="\u0068\u00619\u004e\u004b\u0038]\u0052\u0062\u004c\u002a\u006d\u0034\u004c\u004b\u0057";_dec ,_fed =_cacd ([]byte (_daa ),_dec );if _fed !=nil {return reportState {},_fed ;
|
|
};var _acf reportState ;_fed =_bef .Unmarshal (_dec ,&_acf );if _fed !=nil {_ge .Log .Error ("\u0045\u0052\u0052OR\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0064\u0061\u0074\u0061\u003a\u0020\u0025\u0076",_fed );return reportState {},_cg .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0061\u0074\u0061");
|
|
};return _acf ,nil ;};type LegacyLicense struct{Name string ;Signature string `json:",omitempty"`;Expiration _eg .Time ;LicenseType LegacyLicenseType ;};type stateLoader interface{loadState (_cccf string )(reportState ,error );updateState (_cgd ,_efa ,_dffe string ,_bbc int ,_aff bool ,_aac int ,_gdc int ,_bdf _eg .Time ,_bfb map[string ]int ,_egdd ...interface{})error ;
|
|
};func (_aag LegacyLicense )Verify (pubKey *_fg .PublicKey )error {_ccb :=_aag ;_ccb .Signature ="";_agba :=_fa .Buffer {};_abb :=_bef .NewEncoder (&_agba );if _ae :=_abb .Encode (_ccb );_ae !=nil {return _ae ;};_fbg ,_aeb :=_cf .DecodeString (_aag .Signature );
|
|
if _aeb !=nil {return _aeb ;};_ede :=_bd .Sum256 (_agba .Bytes ());_aeb =_fg .VerifyPKCS1v15 (pubKey ,_b .SHA256 ,_ede [:],_fbg );return _aeb ;};func _cacd (_deb ,_efba []byte )([]byte ,error ){_cdc :=make ([]byte ,_gg .URLEncoding .DecodedLen (len (_efba )));
|
|
_bad ,_dbg :=_gg .URLEncoding .Decode (_cdc ,_efba );if _dbg !=nil {return nil ,_dbg ;};_cdc =_cdc [:_bad ];_gdff ,_dbg :=_ag .NewCipher (_deb );if _dbg !=nil {return nil ,_dbg ;};if len (_cdc )< _ag .BlockSize {return nil ,_cg .New ("c\u0069p\u0068\u0065\u0072\u0074\u0065\u0078\u0074\u0020t\u006f\u006f\u0020\u0073ho\u0072\u0074");
|
|
};_ebegg :=_cdc [:_ag .BlockSize ];_cdc =_cdc [_ag .BlockSize :];_eegc :=_dd .NewCFBDecrypter (_gdff ,_ebegg );_eegc .XORKeyStream (_cdc ,_cdc );return _cdc ,nil ;};func _aaa (_fad string ,_bcf string ,_ggd string )(string ,error ){_ea :=_fac .Index (_ggd ,_fad );
|
|
if _ea ==-1{return "",_gb .Errorf ("\u0068\u0065a\u0064\u0065\u0072 \u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};_fgg :=_fac .Index (_ggd ,_bcf );if _fgg ==-1{return "",_gb .Errorf ("\u0066\u006fo\u0074\u0065\u0072 \u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");
|
|
};_ff :=_ea +len (_fad )+1;return _ggd [_ff :_fgg -1],nil ;};var _bdd =&_ad .Mutex {};var _gee =MakeUnlicensedKey ();func init (){_bgg ,_dag :=_cf .DecodeString (_bcb );if _dag !=nil {_g .Fatalf ("e\u0072\u0072\u006f\u0072 r\u0065a\u0064\u0069\u006e\u0067\u0020k\u0065\u0079\u003a\u0020\u0025\u0073",_dag );
|
|
};_ga ,_dag :=_gf .ParsePKIXPublicKey (_bgg );if _dag !=nil {_g .Fatalf ("e\u0072\u0072\u006f\u0072 r\u0065a\u0064\u0069\u006e\u0067\u0020k\u0065\u0079\u003a\u0020\u0025\u0073",_dag );};_fcg =_ga .(*_fg .PublicKey );};func _gca ()string {_bdedd :=_f .Getenv ("\u0048\u004f\u004d\u0045");
|
|
if len (_bdedd )==0{_bdedd ,_ =_f .UserHomeDir ();};return _bdedd ;};const (_cb ="\u002d\u002d\u002d--\u0042\u0045\u0047\u0049\u004e\u0020\u0055\u004e\u0049D\u004fC\u0020L\u0049C\u0045\u004e\u0053\u0045\u0020\u004b\u0045\u0059\u002d\u002d\u002d\u002d\u002d";
|
|
_ca ="\u002d\u002d\u002d\u002d\u002d\u0045\u004e\u0044\u0020\u0055\u004e\u0049\u0044\u004f\u0043 \u004cI\u0043\u0045\u004e\u0053\u0045\u0020\u004b\u0045\u0059\u002d\u002d\u002d\u002d\u002d";);var _afec stateLoader =defaultStateHolder {};func SetMeteredKey (apiKey string )error {if len (apiKey )==0{_ge .Log .Error ("\u004d\u0065\u0074\u0065\u0072e\u0064\u0020\u004c\u0069\u0063\u0065\u006e\u0073\u0065\u0020\u0041\u0050\u0049 \u004b\u0065\u0079\u0020\u006d\u0075\u0073\u0074\u0020\u006e\u006f\u0074\u0020\u0062\u0065\u0020\u0065\u006d\u0070\u0074\u0079");
|
|
_ge .Log .Error ("\u002d\u0020\u0047\u0072\u0061\u0062\u0020\u006f\u006e\u0065\u0020\u0069\u006e\u0020\u0074h\u0065\u0020\u0046\u0072\u0065\u0065\u0020\u0054\u0069\u0065\u0072\u0020\u0061t\u0020\u0068\u0074\u0074\u0070\u0073\u003a\u002f\u002f\u0063\u006c\u006fud\u002e\u0075\u006e\u0069\u0064\u006f\u0063\u002e\u0069\u006f");
|
|
return _gb .Errorf ("\u006de\u0074\u0065\u0072e\u0064\u0020\u006ci\u0063en\u0073\u0065\u0020\u0061\u0070\u0069\u0020k\u0065\u0079\u0020\u006d\u0075\u0073\u0074\u0020\u006e\u006f\u0074\u0020\u0062\u0065\u0020\u0065\u006d\u0070\u0074\u0079\u003a\u0020\u0063\u0072\u0065\u0061\u0074\u0065 o\u006ee\u0020\u0061\u0074\u0020\u0068\u0074t\u0070\u0073\u003a\u002f\u002fc\u006c\u006f\u0075\u0064\u002e\u0075\u006e\u0069\u0064\u006f\u0063.\u0069\u006f");
|
|
};if _gee !=nil &&(_gee ._dge ||_gee .Tier !=LicenseTierUnlicensed ){_ge .Log .Error ("\u0045\u0052\u0052\u004f\u0052:\u0020\u0043\u0061\u006e\u006eo\u0074 \u0073\u0065\u0074\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0020\u006b\u0065\u0079\u0020\u0074\u0077\u0069c\u0065\u0020\u002d\u0020\u0053\u0068\u006f\u0075\u006c\u0064\u0020\u006a\u0075\u0073\u0074\u0020\u0069\u006e\u0069\u0074\u0069\u0061\u006c\u0069z\u0065\u0020\u006f\u006e\u0063\u0065");
|
|
return _cg .New ("\u006c\u0069\u0063en\u0073\u0065\u0020\u006b\u0065\u0079\u0020\u0061\u006c\u0072\u0065\u0061\u0064\u0079\u0020\u0073\u0065\u0074");};_cge :=_afc ();_cge ._dgbd =apiKey ;_def ,_bgf :=_cge .getStatus ();if _bgf !=nil {return _bgf ;};if !_def .Valid {return _cg .New ("\u006b\u0065\u0079\u0020\u006e\u006f\u0074\u0020\u0076\u0061\u006c\u0069\u0064");
|
|
};_daea :=&LicenseKey {_dge :true ,_ebe :apiKey ,_gc :true };_gee =_daea ;return nil ;};var _dcb =_eg .Date (2010,1,1,0,0,0,0,_eg .UTC );type LegacyLicenseType byte ;func _gfad ()([]string ,[]string ,error ){_bbe ,_gfd :=_ac .Interfaces ();if _gfd !=nil {return nil ,nil ,_gfd ;
|
|
};var _aae []string ;var _bdc []string ;for _ ,_gba :=range _bbe {if _gba .Flags &_ac .FlagUp ==0||_fa .Equal (_gba .HardwareAddr ,nil ){continue ;};_cfb ,_bbf :=_gba .Addrs ();if _bbf !=nil {return nil ,nil ,_bbf ;};_beab :=0;for _ ,_bded :=range _cfb {var _eef _ac .IP ;
|
|
switch _defb :=_bded .(type ){case *_ac .IPNet :_eef =_defb .IP ;case *_ac .IPAddr :_eef =_defb .IP ;};if _eef .IsLoopback (){continue ;};if _eef .To4 ()==nil {continue ;};_bdc =append (_bdc ,_eef .String ());_beab ++;};_edee :=_gba .HardwareAddr .String ();
|
|
if _edee !=""&&_beab > 0{_aae =append (_aae ,_edee );};};return _aae ,_bdc ,nil ;};func _ceg (_gea ,_ffa string )string {_aeg :=[]byte (_gea );_cca :=_edc .New (_bd .New ,_aeg );_cca .Write ([]byte (_ffa ));return _gg .StdEncoding .EncodeToString (_cca .Sum (nil ));
|
|
};func (_feb *LicenseKey )Validate ()error {if _feb ._dge {return nil ;};if len (_feb .LicenseId )< 10{return _gb .Errorf ("i\u006e\u0076\u0061\u006c\u0069\u0064 \u006c\u0069\u0063\u0065\u006e\u0073\u0065\u003a\u0020L\u0069\u0063\u0065n\u0073e\u0020\u0049\u0064");
|
|
};if len (_feb .CustomerId )< 10{return _gb .Errorf ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065:\u0020C\u0075\u0073\u0074\u006f\u006d\u0065\u0072 \u0049\u0064");};if len (_feb .CustomerName )< 1{return _gb .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0069c\u0065\u006e\u0073\u0065\u003a\u0020\u0043u\u0073\u0074\u006f\u006d\u0065\u0072\u0020\u004e\u0061\u006d\u0065");
|
|
};if _dcb .After (_feb .CreatedAt ){return _gb .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u003a\u0020\u0043\u0072\u0065\u0061\u0074\u0065\u0064 \u0041\u0074\u0020\u0069\u0073 \u0069\u006ev\u0061\u006c\u0069\u0064");
|
|
};if _feb .ExpiresAt .IsZero (){_caa :=_feb .CreatedAt .AddDate (1,0,0);if _bab .After (_caa ){_caa =_bab ;};_feb .ExpiresAt =_caa ;};if _feb .CreatedAt .After (_feb .ExpiresAt ){return _gb .Errorf ("i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u003a\u0020\u0043\u0072\u0065\u0061\u0074\u0065\u0064\u0020\u0041\u0074 \u0063a\u006e\u006e\u006f\u0074 \u0062\u0065 \u0047\u0072\u0065\u0061\u0074\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0045\u0078\u0070\u0069\u0072\u0065\u0073\u0020\u0041\u0074");
|
|
};if _feb .isExpired (){_fbf :="\u0054\u0068\u0065\u0020\u006c\u0069c\u0065\u006e\u0073\u0065\u0020\u0068\u0061\u0073\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0065\u0078\u0070\u0069r\u0065\u0064\u002e\u000a"+"\u0059o\u0075\u0020\u006d\u0061y\u0020n\u0065\u0065\u0064\u0020\u0074\u006f\u0020\u0075\u0070d\u0061\u0074\u0065\u0020\u0074\u0068\u0065\u0020l\u0069\u0063\u0065\u006e\u0073\u0065\u0020\u006b\u0065\u0079\u0020t\u006f\u0020\u0074\u0068\u0065\u0020\u006e\u0065\u0077\u0065s\u0074\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0020\u006b\u0065\u0079\u0020\u0066\u006f\u0072\u0020\u0079o\u0075\u0072\u0020\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074i\u006fn\u002e\u000a"+"\u0054o\u0020\u0066\u0069\u006ed y\u006f\u0075\u0072\u0020n\u0065\u0077\u0065\u0073\u0074\u0020\u006c\u0069\u0063\u0065n\u0073\u0065\u0020\u006b\u0065\u0079\u002c\u0020\u0067\u006f\u0020\u0074\u006f\u0020\u0068\u0074\u0074\u0070\u0073\u003a\u002f\u002f\u0063l\u006f\u0075\u0064\u002e\u0075\u006e\u0069\u0064oc\u002e\u0069\u006f \u0061\u006e\u0064\u0020\u0067o\u0020t\u006f\u0020\u0074\u0068\u0065\u0020\u006c\u0069\u0063e\u006e\u0073\u0065\u0020\u006d\u0065\u006e\u0075\u002e";
|
|
return _gb .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u003a\u0020\u0025\u0073",_fbf );};if len (_feb .CreatorName )< 1{return _gb .Errorf ("\u0069\u006ev\u0061\u006c\u0069\u0064\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u003a\u0020\u0043\u0072\u0065\u0061\u0074\u006f\u0072\u0020na\u006d\u0065");
|
|
};if len (_feb .CreatorEmail )< 1{return _gb .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0069c\u0065\u006e\u0073\u0065\u003a\u0020\u0043r\u0065\u0061\u0074\u006f\u0072\u0020\u0065\u006d\u0061\u0069\u006c");};if _feb .CreatedAt .After (_ce ){if !_feb .UniOffice {return _gb .Errorf ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006c\u0069\u0063\u0065\u006e\u0073e\u003a\u0020\u0054\u0068\u0069\u0073\u0020\u0055\u006e\u0069\u0044\u006f\u0063\u0020\u006b\u0065\u0079\u0020i\u0073\u0020\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0066\u006f\u0072\u0020\u0055\u006e\u0069\u004f\u0066\u0066\u0069\u0063\u0065");
|
|
};};return nil ;};var _dgf map[string ]int ;var _afa map[string ]struct{};func Track (docKey string ,useKey string ,docName string )error {return _aee (docKey ,useKey ,docName ,!_gee ._gc );};func _efbeg ()(string ,error ){_cd :=_fac .TrimSpace (_f .Getenv (_dbfd ));
|
|
if _cd ==""{_ge .Log .Debug ("\u0024\u0025\u0073\u0020e\u006e\u0076\u0069\u0072\u006f\u006e\u006d\u0065\u006e\u0074\u0020\u0076\u0061\u0072\u0069\u0061\u0062l\u0065\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u002e\u0020\u0057\u0069\u006c\u006c\u0020\u0075\u0073\u0065\u0020\u0068\u006f\u006d\u0065\u0020\u0064\u0069\u0072\u0065\u0063\u0074\u006f\u0072\u0079\u0020\u0074\u006f\u0020s\u0074\u006f\u0072\u0065\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0020in\u0066o\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u002e",_dbfd );
|
|
_dac :=_gca ();if len (_dac )==0{return "",_gb .Errorf ("r\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0020\u0024\u0025\u0073\u0020\u0065\u006e\u0076\u0069\u0072\u006f\u006e\u006d\u0065\u006e\u0074\u0020\u0076\u0061r\u0069a\u0062\u006c\u0065\u0020o\u0072\u0020h\u006f\u006d\u0065\u0020\u0064\u0069\u0072\u0065\u0063\u0074\u006f\u0072\u0079\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064",_dbfd );
|
|
};_cd =_d .Join (_dac ,"\u002eu\u006e\u0069\u0064\u006f\u0063");};_fdbf :=_f .MkdirAll (_cd ,0777);if _fdbf !=nil {return "",_fdbf ;};return _cd ,nil ;};func _egb (_ceca *_c .Response )(_ed .ReadCloser ,error ){var _dcc error ;var _fbga _ed .ReadCloser ;
|
|
switch _fac .ToLower (_ceca .Header .Get ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067")){case "\u0067\u007a\u0069\u0070":_fbga ,_dcc =_a .NewReader (_ceca .Body );if _dcc !=nil {return _fbga ,_dcc ;};defer _fbga .Close ();
|
|
default:_fbga =_ceca .Body ;};return _fbga ,nil ;};type meteredUsageCheckinResp struct{Instance string `json:"inst"`;Next string `json:"next"`;Success bool `json:"success"`;Message string `json:"message"`;RemainingDocs int `json:"rd"`;LimitDocs bool `json:"ld"`;
|
|
};func _fdc (_efbe []byte )(_ed .Reader ,error ){_fdb :=new (_fa .Buffer );_gaf :=_a .NewWriter (_fdb );_gaf .Write (_efbe );_fda :=_gaf .Close ();if _fda !=nil {return nil ,_fda ;};return _fdb ,nil ;};func SetLicenseKey (content string ,customerName string )error {if _fgd {return nil ;
|
|
};_ebf ,_egf :=_bg (content );if _egf !=nil {_ge .Log .Error ("\u004c\u0069c\u0065\u006e\u0073\u0065\u0020\u0063\u006f\u0064\u0065\u0020\u0064\u0065\u0063\u006f\u0064\u0065\u0020\u0065\u0072\u0072\u006f\u0072: \u0025\u0076",_egf );return _egf ;};if !_fac .EqualFold (_ebf .CustomerName ,customerName ){_ge .Log .Error ("L\u0069ce\u006es\u0065 \u0063\u006f\u0064\u0065\u0020i\u0073\u0073\u0075e\u0020\u002d\u0020\u0043\u0075s\u0074\u006f\u006de\u0072\u0020\u006e\u0061\u006d\u0065\u0020\u006d\u0069\u0073\u006da\u0074\u0063\u0068, e\u0078\u0070\u0065\u0063\u0074\u0065d\u0020\u0027\u0025\u0073\u0027\u002c\u0020\u0062\u0075\u0074\u0020\u0067o\u0074 \u0027\u0025\u0073\u0027",_ebf .CustomerName ,customerName );
|
|
return _gb .Errorf ("\u0063\u0075\u0073\u0074\u006fm\u0065\u0072\u0020\u006e\u0061\u006d\u0065\u0020\u006d\u0069\u0073\u006d\u0061t\u0063\u0068\u002c\u0020\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0027\u0025\u0073\u0027\u002c\u0020\u0062\u0075\u0074\u0020\u0067\u006f\u0074\u0020\u0027\u0025\u0073'",_ebf .CustomerName ,customerName );
|
|
};_egf =_ebf .Validate ();if _egf !=nil {_ge .Log .Error ("\u004c\u0069\u0063\u0065\u006e\u0073e\u0020\u0063\u006f\u0064\u0065\u0020\u0076\u0061\u006c\u0069\u0064\u0061\u0074i\u006f\u006e\u0020\u0065\u0072\u0072\u006fr\u003a\u0020\u0025\u0076",_egf );return _egf ;
|
|
};_gee =&_ebf ;return nil ;};func SetMeteredKeyUsageLogVerboseMode (val bool ){_gee ._fce =val };const (LicenseTierUnlicensed ="\u0075\u006e\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0064";LicenseTierCommunity ="\u0063o\u006d\u006d\u0075\u006e\u0069\u0074y";
|
|
LicenseTierIndividual ="\u0069\u006e\u0064\u0069\u0076\u0069\u0064\u0075\u0061\u006c";LicenseTierBusiness ="\u0062\u0075\u0073\u0069\u006e\u0065\u0073\u0073";);func GetMeteredState ()(MeteredStatus ,error ){if _gee ==nil {return MeteredStatus {},_cg .New ("\u006c\u0069\u0063\u0065ns\u0065\u0020\u006b\u0065\u0079\u0020\u006e\u006f\u0074\u0020\u0073\u0065\u0074");
|
|
};if !_gee ._dge ||len (_gee ._ebe )==0{return MeteredStatus {},_cg .New ("\u0061p\u0069 \u006b\u0065\u0079\u0020\u006e\u006f\u0074\u0020\u0073\u0065\u0074");};_bb ,_ddc :=_afec .loadState (_gee ._ebe );if _ddc !=nil {_ge .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_ddc );
|
|
return MeteredStatus {},_ddc ;};if _bb .Docs > 0{_gdfc :=_aee ("","","",true );if _gdfc !=nil {return MeteredStatus {},_gdfc ;};};_bdd .Lock ();defer _bdd .Unlock ();_gcd :=_afc ();_gcd ._dgbd =_gee ._ebe ;_ebc ,_ddc :=_gcd .getStatus ();if _ddc !=nil {return MeteredStatus {},_ddc ;
|
|
};if !_ebc .Valid {return MeteredStatus {},_cg .New ("\u006b\u0065\u0079\u0020\u006e\u006f\u0074\u0020\u0076\u0061\u006c\u0069\u0064");};_ebd :=MeteredStatus {OK :true ,Credits :_ebc .OrgCredits ,Used :_ebc .OrgUsed };return _ebd ,nil ;};func _gbf (_db string ,_gfa string )([]byte ,error ){var (_eb int ;
|
|
_ec string ;);for _ ,_ec =range []string {"\u000a\u002b\u000a","\u000d\u000a\u002b\r\u000a","\u0020\u002b\u0020"}{if _eb =_fac .Index (_gfa ,_ec );_eb !=-1{break ;};};if _eb ==-1{return nil ,_gb .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0069\u006e\u0070\u0075\u0074\u002c \u0073i\u0067n\u0061t\u0075\u0072\u0065\u0020\u0073\u0065\u0070\u0061\u0072\u0061\u0074\u006f\u0072");
|
|
};_eda :=_gfa [:_eb ];_ggf :=_eb +len (_ec );_egda :=_gfa [_ggf :];if _eda ==""||_egda ==""{return nil ,_gb .Errorf ("\u0069n\u0076\u0061l\u0069\u0064\u0020\u0069n\u0070\u0075\u0074,\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020or\u0069\u0067\u0069n\u0061\u006c \u006f\u0072\u0020\u0073\u0069\u0067n\u0061\u0074u\u0072\u0065");
|
|
};_dgb ,_faf :=_gg .StdEncoding .DecodeString (_eda );if _faf !=nil {return nil ,_gb .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0070\u0075\u0074\u0020\u006f\u0072\u0069\u0067\u0069\u006ea\u006c");};_fb ,_faf :=_gg .StdEncoding .DecodeString (_egda );
|
|
if _faf !=nil {return nil ,_gb .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0069\u006e\u0070\u0075\u0074\u0020\u0073\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065");};_fgb ,_ :=_aa .Decode ([]byte (_db ));if _fgb ==nil {return nil ,_gb .Errorf ("\u0050\u0075\u0062\u004b\u0065\u0079\u0020\u0066\u0061\u0069\u006c\u0065\u0064");
|
|
};_cbf ,_faf :=_gf .ParsePKIXPublicKey (_fgb .Bytes );if _faf !=nil {return nil ,_faf ;};_dc :=_cbf .(*_fg .PublicKey );if _dc ==nil {return nil ,_gb .Errorf ("\u0050u\u0062\u004b\u0065\u0079\u0020\u0063\u006f\u006e\u0076\u0065\u0072s\u0069\u006f\u006e\u0020\u0066\u0061\u0069\u006c\u0065\u0064");
|
|
};_fgf :=_gfb .New ();_fgf .Write (_dgb );_gdf :=_fgf .Sum (nil );_faf =_fg .VerifyPKCS1v15 (_dc ,_b .SHA512 ,_gdf ,_fb );if _faf !=nil {return nil ,_faf ;};return _dgb ,nil ;};func _ged (_agbc ,_bdec []byte )([]byte ,error ){_gaaf ,_dad :=_ag .NewCipher (_agbc );
|
|
if _dad !=nil {return nil ,_dad ;};_ccbe :=make ([]byte ,_ag .BlockSize +len (_bdec ));_ffc :=_ccbe [:_ag .BlockSize ];if _ ,_gad :=_ed .ReadFull (_fe .Reader ,_ffc );_gad !=nil {return nil ,_gad ;};_fge :=_dd .NewCFBEncrypter (_gaaf ,_ffc );_fge .XORKeyStream (_ccbe [_ag .BlockSize :],_bdec );
|
|
_bdb :=make ([]byte ,_gg .URLEncoding .EncodedLen (len (_ccbe )));_gg .URLEncoding .Encode (_bdb ,_ccbe );return _bdb ,nil ;};type meteredUsageCheckinForm struct{Instance string `json:"inst"`;Next string `json:"next"`;UsageNumber int `json:"usage_number"`;
|
|
NumFailed int64 `json:"num_failed"`;Hostname string `json:"hostname"`;LocalIP string `json:"local_ip"`;MacAddress string `json:"mac_address"`;Package string `json:"package"`;PackageVersion string `json:"package_version"`;Usage map[string ]int `json:"u"`;
|
|
IsPersistentCache bool `json:"is_persistent_cache"`;Timestamp int64 `json:"timestamp"`;UsageLogs []interface{}`json:"ul,omitempty"`;};const _dfde ="\u0055\u004e\u0049\u004fFF\u0049\u0043\u0045\u005f\u004c\u0049\u0043\u0045\u004e\u0053\u0045\u005f\u0050\u0041T\u0048";
|
|
type reportState struct{Instance string `json:"inst"`;Next string `json:"n"`;Docs int64 `json:"d"`;NumErrors int64 `json:"e"`;LimitDocs bool `json:"ld"`;RemainingDocs int64 `json:"rd"`;LastReported _eg .Time `json:"lr"`;LastWritten _eg .Time `json:"lw"`;
|
|
Usage map[string ]int `json:"u"`;UsageLogs []interface{}`json:"ul,omitempty"`;};func TrackUse (useKey string ){if _gee ==nil {return ;};if !_gee ._dge ||len (_gee ._ebe )==0{return ;};if len (useKey )==0{return ;};_bdd .Lock ();defer _bdd .Unlock ();if _dgf ==nil {_dgf =map[string ]int {};
|
|
};_dgf [useKey ]++;};type meteredStatusForm struct{};func _aee (_gfg string ,_bddf string ,_fgfd string ,_aaab bool )error {if _gee ==nil {return _cg .New ("\u006e\u006f\u0020\u006c\u0069\u0063\u0065\u006e\u0073e\u0020\u006b\u0065\u0079");};if !_gee ._dge ||len (_gee ._ebe )==0{return nil ;
|
|
};if len (_gfg )==0&&!_aaab {return _cg .New ("\u0064\u006f\u0063\u004b\u0065\u0079\u0020\u006e\u006ft\u0020\u0073\u0065\u0074");};_bdd .Lock ();defer _bdd .Unlock ();if _afa ==nil {_afa =map[string ]struct{}{};};if _dgf ==nil {_dgf =map[string ]int {};
|
|
};_cbab :=0;if len (_gfg )> 0{_ ,_gcg :=_afa [_gfg ];if !_gcg {_afa [_gfg ]=struct{}{};_cbab ++;};if _gee ._fce {_fcf =append (_fcf ,map[string ]interface{}{"\u0074\u0069\u006d\u0065":_eg .Now ().String (),"\u0066\u0075\u006e\u0063":_bddf ,"\u0072\u0065\u0066":_gfg [:8],"\u0066\u0069\u006c\u0065":_fgfd ,"\u0063\u006f\u0073\u0074":_cbab });
|
|
if _gcg &&_cbab ==0{_ge .Log .Info ("\u0025\u0073\u0020\u0052\u0065\u0066\u003a\u0020\u0025\u0073\u0020\u007c\u0020\u0025\u0073 \u007c \u004e\u006f\u0020\u0063\u0072\u0065\u0064\u0069\u0074\u0020\u0075\u0073\u0065\u0064",_eg .Now ().String (),_gfg [:8],_bddf );
|
|
};};};if _cbab ==0&&!_aaab {return nil ;};_dgf [_bddf ]++;_fd :=_eg .Now ();_bgbg ,_cgb :=_afec .loadState (_gee ._ebe );if _cgb !=nil {_ge .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_cgb );return _cgb ;};_bgbg .UsageLogs =append (_bgbg .UsageLogs ,_fcf ...);
|
|
if _bgbg .Usage ==nil {_bgbg .Usage =map[string ]int {};};for _edg ,_dgef :=range _dgf {if _edg !=""{_bgbg .Usage [_edg ]+=_dgef ;};};_dgf =nil ;const _eec =24*_eg .Hour ;const _afd =3*24*_eg .Hour ;if len (_bgbg .Instance )==0||_fd .Sub (_bgbg .LastReported )> _eec ||(_bgbg .LimitDocs &&_bgbg .RemainingDocs <=_bgbg .Docs +int64 (_cbab ))||_aaab {_bdg ,_dbf :=_f .Hostname ();
|
|
if _dbf !=nil {return _dbf ;};_egdb :=_bgbg .Docs ;_eag ,_dfg ,_dbf :=_gfad ();if _dbf !=nil {_ge .Log .Debug ("\u0055\u006e\u0061b\u006c\u0065\u0020\u0074o\u0020\u0067\u0065\u0074\u0020\u006c\u006fc\u0061\u006c\u0020\u0061\u0064\u0064\u0072\u0065\u0073\u0073\u003a\u0020\u0025\u0073",_dbf .Error ());
|
|
_eag =append (_eag ,"\u0069n\u0066\u006f\u0072\u006da\u0074\u0069\u006f\u006e\u0020n\u006ft\u0020a\u0076\u0061\u0069\u006c\u0061\u0062\u006ce");_dfg =append (_dfg ,"\u0069n\u0066\u006f\u0072\u006da\u0074\u0069\u006f\u006e\u0020n\u006ft\u0020a\u0076\u0061\u0069\u006c\u0061\u0062\u006ce");
|
|
}else {_bea .Strings (_dfg );_bea .Strings (_eag );_fcd ,_fabf :=_cef ();if _fabf !=nil {return _fabf ;};_baa :=false ;for _ ,_bbd :=range _dfg {if _bbd ==_fcd .String (){_baa =true ;};};if !_baa {_dfg =append (_dfg ,_fcd .String ());};};_ffe :=_afc ();
|
|
_ffe ._dgbd =_gee ._ebe ;_egdb +=int64 (_cbab );_bga :=meteredUsageCheckinForm {Instance :_bgbg .Instance ,Next :_bgbg .Next ,UsageNumber :int (_egdb ),NumFailed :_bgbg .NumErrors ,Hostname :_bdg ,LocalIP :_fac .Join (_dfg ,"\u002c\u0020"),MacAddress :_fac .Join (_eag ,"\u002c\u0020"),Package :"\u0075n\u0069\u006f\u0066\u0066\u0069\u0063e",PackageVersion :_fc .Version ,Usage :_bgbg .Usage ,IsPersistentCache :_gee ._gc ,Timestamp :_fd .Unix ()};
|
|
if len (_eag )==0{_bga .MacAddress ="\u006e\u006f\u006e\u0065";};if _gee ._fce {_bga .UsageLogs =_bgbg .UsageLogs ;};_gfgc :=int64 (0);_defd :=_bgbg .NumErrors ;_fde :=_fd ;_dgg :=0;_eac :=_bgbg .LimitDocs ;_abab ,_dbf :=_ffe .checkinUsage (_bga );if _dbf !=nil {if _fd .Sub (_bgbg .LastReported )> _afd {if !_abab .Success {return _cg .New (_abab .Message );
|
|
};return _cg .New ("\u0074\u006f\u006f\u0020\u006c\u006f\u006e\u0067\u0020\u0073\u0069\u006e\u0063\u0065\u0020\u006c\u0061\u0073\u0074\u0020\u0073\u0075\u0063\u0063e\u0073\u0073\u0066\u0075\u006c \u0063\u0068e\u0063\u006b\u0069\u006e");};_gfgc =_egdb ;
|
|
_defd ++;_fde =_bgbg .LastReported ;}else {_eac =_abab .LimitDocs ;_dgg =_abab .RemainingDocs ;_defd =0;};if len (_abab .Instance )==0{_abab .Instance =_bga .Instance ;};if len (_abab .Next )==0{_abab .Next =_bga .Next ;};_dbf =_afec .updateState (_ffe ._dgbd ,_abab .Instance ,_abab .Next ,int (_gfgc ),_eac ,_dgg ,int (_defd ),_fde ,nil );
|
|
if _dbf !=nil {return _dbf ;};if !_abab .Success {return _gb .Errorf ("\u0065r\u0072\u006f\u0072\u003a\u0020\u0025s",_abab .Message );};}else {_cgb =_afec .updateState (_gee ._ebe ,_bgbg .Instance ,_bgbg .Next ,int (_bgbg .Docs )+_cbab ,_bgbg .LimitDocs ,int (_bgbg .RemainingDocs ),int (_bgbg .NumErrors ),_bgbg .LastReported ,_bgbg .Usage ,_bgbg .UsageLogs ...);
|
|
if _cgb !=nil {return _cgb ;};};if _gee ._fce &&len (_gfg )> 0{_gdca :="";if _fgfd !=""{_gdca =_gb .Sprintf ("\u0046i\u006c\u0065\u0020\u0025\u0073\u0020|",_fgfd );};_ge .Log .Info ("%\u0073\u0020\u007c\u0020\u0025\u0073\u0020\u0052\u0065\u0066\u003a\u0020\u0025\u0073\u0020\u007c\u0020\u0025s\u0020\u007c\u0020\u0025\u0064\u0020\u0063\u0072\u0065\u0064it\u0028\u0073\u0029 \u0075s\u0065\u0064",_fd .String (),_gdca ,_gfg [:8],_bddf ,_cbab );
|
|
};return nil ;};func (_cbc *meteredClient )checkinUsage (_gbfg meteredUsageCheckinForm )(meteredUsageCheckinResp ,error ){_gbfg .Package ="\u0075n\u0069\u006f\u0066\u0066\u0069\u0063e";_gbfg .PackageVersion =_fc .Version ;var _bf meteredUsageCheckinResp ;
|
|
_dcg :=_cbc ._dbb +"\u002f\u006d\u0065\u0074er\u0065\u0064\u002f\u0075\u0073\u0061\u0067\u0065\u005f\u0063\u0068\u0065\u0063\u006bi\u006e";_ddb ,_afe :=_bef .Marshal (_gbfg );if _afe !=nil {return _bf ,_afe ;};_dda ,_afe :=_fdc (_ddb );if _afe !=nil {return _bf ,_afe ;
|
|
};_gaa ,_afe :=_c .NewRequest ("\u0050\u004f\u0053\u0054",_dcg ,_dda );if _afe !=nil {return _bf ,_afe ;};_gaa .Header .Add ("\u0043\u006f\u006et\u0065\u006e\u0074\u002d\u0054\u0079\u0070\u0065","\u0061\u0070p\u006c\u0069\u0063a\u0074\u0069\u006f\u006e\u002f\u006a\u0073\u006f\u006e");
|
|
_gaa .Header .Add ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067","\u0067\u007a\u0069\u0070");_gaa .Header .Add ("\u0041c\u0063e\u0070\u0074\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067","\u0067\u007a\u0069\u0070");
|
|
_gaa .Header .Add ("\u0058-\u0041\u0050\u0049\u002d\u004b\u0045Y",_cbc ._dgbd );_gcf ,_afe :=_cbc ._ege .Do (_gaa );if _afe !=nil {_ge .Log .Error ("\u0049n\u0076\u0061\u006c\u0069d\u0020\u0068\u0074\u0074\u0070 \u0072e\u0073p\u006f\u006e\u0073\u0065\u003a\u0020\u0025v",_afe );
|
|
return _bf ,_afe ;};defer _gcf .Body .Close ();if _gcf .StatusCode !=200{_dfd ,_fafa :=_ddca (_gcf );if _fafa !=nil {return _bf ,_fafa ;};_fafa =_bef .Unmarshal (_dfd ,&_bf );if _fafa !=nil {return _bf ,_fafa ;};return _bf ,_gb .Errorf ("\u0066\u0061i\u006c\u0065\u0064\u0020t\u006f\u0020c\u0068\u0065\u0063\u006b\u0069\u006e\u002c\u0020s\u0074\u0061\u0074\u0075\u0073\u0020\u0063\u006f\u0064\u0065\u0020\u0069s\u003a\u0020\u0025\u0064",_gcf .StatusCode );
|
|
};_cba :=_gcf .Header .Get ("\u0058\u002d\u0055\u0043\u002d\u0053\u0069\u0067\u006ea\u0074\u0075\u0072\u0065");_ddf :=_ceg (_gbfg .MacAddress ,string (_ddb ));if _ddf !=_cba {_ge .Log .Error ("I\u006e\u0076\u0061l\u0069\u0064\u0020\u0072\u0065\u0073\u0070\u006f\u006e\u0073\u0065\u0020\u0073\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065\u002c\u0020\u0073\u0065t\u0020\u0074\u0068e\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0020\u0073\u0065\u0072\u0076e\u0072\u0020\u0074\u006f \u0068\u0074\u0074\u0070s\u003a\u002f\u002f\u0063\u006c\u006f\u0075\u0064\u002e\u0075\u006e\u0069\u0064\u006f\u0063\u002e\u0069o\u002f\u0061\u0070\u0069");
|
|
return _bf ,_cg .New ("\u0066\u0061\u0069l\u0065\u0064\u0020\u0074\u006f\u0020\u0063\u0068\u0065\u0063\u006b\u0069\u006e\u002c\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0073\u0065\u0072\u0076\u0065\u0072 \u0072\u0065\u0073\u0070\u006f\u006e\u0073\u0065");
|
|
};_ggda ,_afe :=_ddca (_gcf );if _afe !=nil {return _bf ,_afe ;};_afe =_bef .Unmarshal (_ggda ,&_bf );if _afe !=nil {return _bf ,_afe ;};return _bf ,nil ;};func (_dee *meteredClient )getStatus ()(meteredStatusResp ,error ){var _dae meteredStatusResp ;_cec :=_dee ._dbb +"\u002fm\u0065t\u0065\u0072\u0065\u0064\u002f\u0073\u0074\u0061\u0074\u0075\u0073";
|
|
var _efe meteredStatusForm ;_fbff ,_gge :=_bef .Marshal (_efe );if _gge !=nil {return _dae ,_gge ;};_bde ,_gge :=_fdc (_fbff );if _gge !=nil {return _dae ,_gge ;};_cbg ,_gge :=_c .NewRequest ("\u0050\u004f\u0053\u0054",_cec ,_bde );if _gge !=nil {return _dae ,_gge ;
|
|
};_cbg .Header .Add ("\u0043\u006f\u006et\u0065\u006e\u0074\u002d\u0054\u0079\u0070\u0065","\u0061\u0070p\u006c\u0069\u0063a\u0074\u0069\u006f\u006e\u002f\u006a\u0073\u006f\u006e");_cbg .Header .Add ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067","\u0067\u007a\u0069\u0070");
|
|
_cbg .Header .Add ("\u0041c\u0063e\u0070\u0074\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067","\u0067\u007a\u0069\u0070");_cbg .Header .Add ("\u0058-\u0041\u0050\u0049\u002d\u004b\u0045Y",_dee ._dgbd );_ccc ,_gge :=_dee ._ege .Do (_cbg );if _gge !=nil {return _dae ,_gge ;
|
|
};defer _ccc .Body .Close ();if _ccc .StatusCode !=200{return _dae ,_gb .Errorf ("\u0066\u0061i\u006c\u0065\u0064\u0020t\u006f\u0020c\u0068\u0065\u0063\u006b\u0069\u006e\u002c\u0020s\u0074\u0061\u0074\u0075\u0073\u0020\u0063\u006f\u0064\u0065\u0020\u0069s\u003a\u0020\u0025\u0064",_ccc .StatusCode );
|
|
};_beg ,_gge :=_ddca (_ccc );if _gge !=nil {return _dae ,_gge ;};_gge =_bef .Unmarshal (_beg ,&_dae );if _gge !=nil {return _dae ,_gge ;};return _dae ,nil ;};func _bg (_daf string )(LicenseKey ,error ){var _de LicenseKey ;_eeg ,_af :=_aaa (_cb ,_ca ,_daf );
|
|
if _af !=nil {return _de ,_af ;};_cgg ,_af :=_gbf (_cace ,_eeg );if _af !=nil {return _de ,_af ;};_af =_bef .Unmarshal (_cgg ,&_de );if _af !=nil {return _de ,_af ;};_de .CreatedAt =_eg .Unix (_de .CreatedAtInt ,0);if _de .ExpiresAtInt > 0{_agb :=_eg .Unix (_de .ExpiresAtInt ,0);
|
|
_de .ExpiresAt =_agb ;};return _de ,nil ;};func SetLegacyLicenseKey (s string )error {_fcdf :=_be .MustCompile ("\u005c\u0073");s =_fcdf .ReplaceAllString (s ,"");var _aaaf _ed .Reader ;_aaaf =_fac .NewReader (s );_aaaf =_gg .NewDecoder (_gg .RawURLEncoding ,_aaaf );
|
|
_aaaf ,_efbb :=_a .NewReader (_aaaf );if _efbb !=nil {return _efbb ;};_gbg :=_bef .NewDecoder (_aaaf );_adfa :=&LegacyLicense {};if _ffcd :=_gbg .Decode (_adfa );_ffcd !=nil {return _ffcd ;};if _cff :=_adfa .Verify (_fcg );_cff !=nil {return _cg .New ("\u006c\u0069\u0063en\u0073\u0065\u0020\u0076\u0061\u006c\u0069\u0064\u0061\u0074\u0069\u006e\u0020\u0065\u0072\u0072\u006f\u0072");
|
|
};if _adfa .Expiration .Before (_fc .ReleasedAt ){return _cg .New ("\u006ci\u0063e\u006e\u0073\u0065\u0020\u0065\u0078\u0070\u0069\u0072\u0065\u0064");};_febb :=_eg .Now ().UTC ();_fag :=LicenseKey {};_fag .CreatedAt =_febb ;_fag .CustomerId ="\u004c\u0065\u0067\u0061\u0063\u0079";
|
|
_fag .CustomerName =_adfa .Name ;_fag .Tier =LicenseTierBusiness ;_fag .ExpiresAt =_adfa .Expiration ;_fag .CreatorName ="\u0055\u006e\u0069\u0044\u006f\u0063\u0020\u0073\u0075p\u0070\u006f\u0072\u0074";_fag .CreatorEmail ="\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0040\u0075\u006e\u0069\u0064o\u0063\u002e\u0069\u006f";
|
|
_fag .UniOffice =true ;_gee =&_fag ;return nil ;};var _fcg *_fg .PublicKey ;func (_ecd *LicenseKey )TypeToString ()string {if _ecd ._dge {return "M\u0065t\u0065\u0072\u0065\u0064\u0020\u0073\u0075\u0062s\u0063\u0072\u0069\u0070ti\u006f\u006e";};if _ecd .Tier ==LicenseTierUnlicensed {return "\u0055\u006e\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0064";
|
|
};if _ecd .Tier ==LicenseTierCommunity {return "\u0041\u0047PL\u0076\u0033\u0020O\u0070\u0065\u006e\u0020Sou\u0072ce\u0020\u0043\u006f\u006d\u006d\u0075\u006eit\u0079\u0020\u004c\u0069\u0063\u0065\u006es\u0065";};if _ecd .Tier ==LicenseTierIndividual ||_ecd .Tier =="\u0069\u006e\u0064i\u0065"{return "\u0043\u006f\u006dm\u0065\u0072\u0063\u0069a\u006c\u0020\u004c\u0069\u0063\u0065\u006es\u0065\u0020\u002d\u0020\u0049\u006e\u0064\u0069\u0076\u0069\u0064\u0075\u0061\u006c";
|
|
};return "\u0043\u006fm\u006d\u0065\u0072\u0063\u0069\u0061\u006c\u0020\u004c\u0069\u0063\u0065\u006e\u0073\u0065\u0020\u002d\u0020\u0042\u0075\u0073\u0069ne\u0073\u0073";};func _ddca (_cgf *_c .Response )([]byte ,error ){var _gfge []byte ;_daca ,_dafg :=_egb (_cgf );
|
|
if _dafg !=nil {return _gfge ,_dafg ;};return _ef .ReadAll (_daca );};func (_ceb *LicenseKey )getExpiryDateToCompare ()_eg .Time {if _ceb .Trial {return _eg .Now ().UTC ();};return _fc .ReleasedAt ;};func _dg (_ee string ,_egd []byte )(string ,error ){_df ,_ :=_aa .Decode ([]byte (_ee ));
|
|
if _df ==nil {return "",_gb .Errorf ("\u0050\u0072\u0069\u0076\u004b\u0065\u0079\u0020\u0066a\u0069\u006c\u0065\u0064");};_ba ,_adb :=_gf .ParsePKCS1PrivateKey (_df .Bytes );if _adb !=nil {return "",_adb ;};_gd :=_gfb .New ();_gd .Write (_egd );_agg :=_gd .Sum (nil );
|
|
_bc ,_adb :=_fg .SignPKCS1v15 (_fe .Reader ,_ba ,_b .SHA512 ,_agg );if _adb !=nil {return "",_adb ;};_gde :=_gg .StdEncoding .EncodeToString (_egd );_gde +="\u000a\u002b\u000a";_gde +=_gg .StdEncoding .EncodeToString (_bc );return _gde ,nil ;};func init (){_aca :=_f .Getenv (_dfde );
|
|
_eea :=_f .Getenv (_cbabf );if len (_aca )==0||len (_eea )==0{return ;};_dgbg ,_dcgb :=_ef .ReadFile (_aca );if _dcgb !=nil {_ge .Log .Error ("\u0055\u006eab\u006c\u0065\u0020t\u006f\u0020\u0072\u0065ad \u006cic\u0065\u006e\u0073\u0065\u0020\u0063\u006fde\u0020\u0066\u0069\u006c\u0065\u003a\u0020%\u0076",_dcgb );
|
|
return ;};_dcgb =SetLicenseKey (string (_dgbg ),_eea );if _dcgb !=nil {_ge .Log .Error ("\u0055\u006e\u0061b\u006c\u0065\u0020\u0074o\u0020\u006c\u006f\u0061\u0064\u0020\u006ci\u0063\u0065\u006e\u0073\u0065\u0020\u0063\u006f\u0064\u0065\u003a\u0020\u0025\u0076",_dcgb );
|
|
return ;};};func SetMeteredKeyPersistentCache (val bool ){_gee ._gc =val };const _cbabf ="\u0055\u004e\u0049OF\u0046\u0049\u0043\u0045\u005f\u0043\u0055\u0053\u0054\u004f\u004d\u0045\u0052\u005f\u004e\u0041\u004d\u0045";func (_gff *LicenseKey )isExpired ()bool {return _gff .getExpiryDateToCompare ().After (_gff .ExpiresAt )};
|
|
func MakeUnlicensedKey ()*LicenseKey {_adf :=LicenseKey {};_adf .CustomerName ="\u0055\u006e\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0064";_adf .Tier =LicenseTierUnlicensed ;_adf .CreatedAt =_eg .Now ().UTC ();_adf .CreatedAtInt =_adf .CreatedAt .Unix ();
|
|
return &_adf ;};func GetLicenseKey ()*LicenseKey {if _gee ==nil {return nil ;};_bbff :=*_gee ;return &_bbff ;};func GenRefId (prefix string )(string ,error ){var _afg _fa .Buffer ;_afg .WriteString (prefix );_acfg :=make ([]byte ,8+16);_daec :=_eg .Now ().UTC ().UnixNano ();
|
|
_ab .BigEndian .PutUint64 (_acfg ,uint64 (_daec ));_ ,_dbfdf :=_fe .Read (_acfg [8:]);if _dbfdf !=nil {return "",_dbfdf ;};_afg .WriteString (_cf .EncodeToString (_acfg ));return _afg .String (),nil ;};var _bab =_eg .Date (2020,1,1,0,0,0,0,_eg .UTC );type LicenseKey struct{LicenseId string `json:"license_id"`;
|
|
CustomerId string `json:"customer_id"`;CustomerName string `json:"customer_name"`;Tier string `json:"tier"`;CreatedAt _eg .Time `json:"-"`;CreatedAtInt int64 `json:"created_at"`;ExpiresAt _eg .Time `json:"-"`;ExpiresAtInt int64 `json:"expires_at"`;CreatedBy string `json:"created_by"`;
|
|
CreatorName string `json:"creator_name"`;CreatorEmail string `json:"creator_email"`;UniPDF bool `json:"unipdf"`;UniOffice bool `json:"unioffice"`;UniHTML bool `json:"unihtml"`;Trial bool `json:"trial"`;_dge bool ;_ebe string ;_gc bool ;_fce bool ;};func (_cfa defaultStateHolder )updateState (_agbaa ,_ebeg ,_bgb string ,_ddfd int ,_dcgc bool ,_affg int ,_dfa int ,_gfc _eg .Time ,_aef map[string ]int ,_aaf ...interface{})error {_aba ,_ada :=_efbeg ();
|
|
if _ada !=nil {return _ada ;};_ada =_f .MkdirAll (_aba ,0777);if _ada !=nil {return _ada ;};if len (_agbaa )< 20{return _cg .New ("i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006b\u0065\u0079");};_eegb :=[]byte (_agbaa );_febda :=_gfb .Sum512_256 (_eegb [:20]);
|
|
_cea :=_cf .EncodeToString (_febda [:]);_dcf :=_d .Join (_aba ,_cea );var _edab reportState ;_edab .Docs =int64 (_ddfd );_edab .NumErrors =int64 (_dfa );_edab .LimitDocs =_dcgc ;_edab .RemainingDocs =int64 (_affg );_edab .LastWritten =_eg .Now ().UTC ();
|
|
_edab .LastReported =_gfc ;_edab .Instance =_ebeg ;_edab .Next =_bgb ;_edab .Usage =_aef ;_gdcd ,_ada :=_bef .Marshal (_edab );if _ada !=nil {return _ada ;};const _ebg ="\u0068\u00619\u004e\u004b\u0038]\u0052\u0062\u004c\u002a\u006d\u0034\u004c\u004b\u0057";
|
|
_gdcd ,_ada =_ged ([]byte (_ebg ),_gdcd );if _ada !=nil {return _ada ;};_ada =_ef .WriteFile (_dcf ,_gdcd ,0600);if _ada !=nil {return _ada ;};return nil ;};var _fgd =false ;func _afc ()*meteredClient {_cac :=meteredClient {_dbb :"h\u0074\u0074\u0070\u0073\u003a\u002f/\u0063\u006c\u006f\u0075\u0064\u002e\u0075\u006e\u0069d\u006f\u0063\u002ei\u006f/\u0061\u0070\u0069",_ege :&_c .Client {Timeout :30*_eg .Second }};
|
|
if _febd :=_f .Getenv ("\u0055N\u0049\u0044\u004f\u0043_\u004c\u0049\u0043\u0045\u004eS\u0045_\u0053E\u0052\u0056\u0045\u0052\u005f\u0055\u0052L");_fac .HasPrefix (_febd ,"\u0068\u0074\u0074\u0070"){_cac ._dbb =_febd ;};return &_cac ;}; |